Repository: qarmin/czkawka (language: rust)

Issue:
Can't click anywhere on the app after running music search with only "approximate comparison" checked
![image](https://user-images.githubusercontent.com/2829457/169917035-b91b5ae4-0c69-4aa0-ada1-f488476cae2f.png)

All options are greyed out along with the message "ERROR: You must select at least one checkbox with music searching types." but you can't rerun the search because you can't change the tags after this happens.

I am on Windows on 4.1.0.


Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index d9c6ec300..b8cce7dcf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,5 @@ results*.txt
 TestSuite*
 *.snap
 flatpak/
-*.zip
\ No newline at end of file
+*.zip
+*.zst
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index 85bb71618..de5abaccb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -522,13 +522,14 @@ dependencies = [
 
 [[package]]
 name = "dashmap"
-version = "5.3.3"
+version = "5.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "391b56fbd302e585b7a9494fb70e40949567b1cf9003a8e4a6041a1687c26573"
+checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f"
 dependencies = [
  "cfg-if",
  "hashbrown 0.12.1",
  "lock_api",
+ "parking_lot_core",
 ]
 
 [[package]]
@@ -712,13 +713,11 @@ dependencies = [
 
 [[package]]
 name = "flate2"
-version = "1.0.23"
+version = "1.0.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af"
+checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
 dependencies = [
- "cfg-if",
  "crc32fast",
- "libc",
  "miniz_oxide 0.5.1",
 ]
 
@@ -785,6 +784,16 @@ version = "1.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 
+[[package]]
+name = "form_urlencoded"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
+dependencies = [
+ "matches",
+ "percent-encoding",
+]
+
 [[package]]
 name = "fs_extra"
 version = "1.2.0"
@@ -924,9 +933,9 @@ dependencies = [
 
 [[package]]
 name = "gdk4-sys"
-version = "0.4.2"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48a39e34abe35ee2cf54a1e29dd983accecd113ad30bdead5050418fa92f2a1b"
+checksum = "b34a7e60e0c0103cffeaf7baf9dc05358dca74fd350a0c4d61c6c3083ca9fdf1"
 dependencies = [
  "cairo-sys-rs",
  "gdk-pixbuf-sys",
@@ -1308,6 +1317,17 @@ dependencies = [
  "syn",
 ]
 
+[[package]]
+name = "idna"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
+dependencies = [
+ "matches",
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
 [[package]]
 name = "image"
 version = "0.23.14"
@@ -1382,9 +1402,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "1.8.1"
+version = "1.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee"
+checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"
 dependencies = [
  "autocfg",
  "hashbrown 0.11.2",
@@ -1559,6 +1579,12 @@ dependencies = [
  "libc",
 ]
 
+[[package]]
+name = "matches"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
+
 [[package]]
 name = "md5"
 version = "0.7.0"
@@ -1762,9 +1788,9 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.11.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b10983b38c53aebdf33f542c6275b0f58a238129d00c4ae0e6fb59738d783ca"
+checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
 
 [[package]]
 name = "opaque-debug"
@@ -1910,6 +1936,12 @@ dependencies = [
  "syn",
 ]
 
+[[package]]
+name = "percent-encoding"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
+
 [[package]]
 name = "pest"
 version = "2.1.3"
@@ -2851,11 +2883,18 @@ dependencies = [
 
 [[package]]
 name = "trash"
-version = "1.3.0"
+version = "2.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90df96afb154814e214f37eac04920c66886fd95962f22febb4d537b0dacd512"
+checksum = "7d0492e349e41bfa40e9d446a5803b84275898f0b3bda568b23e10325702095d"
 dependencies = [
- "winapi",
+ "chrono",
+ "libc",
+ "log",
+ "objc",
+ "once_cell",
+ "scopeguard",
+ "url",
+ "windows",
 ]
 
 [[package]]
@@ -2946,11 +2985,23 @@ version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
 
+[[package]]
+name = "url"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "matches",
+ "percent-encoding",
+]
+
 [[package]]
 name = "uuid"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cfcd319456c4d6ea10087ed423473267e1a071f3bc0aa89f80d60997843c6f0"
+checksum = "93bbc61e655a4833cf400d0d15bf3649313422fa7572886ad6dab16d79886365"
 
 [[package]]
 name = "vec_map"
@@ -3095,17 +3146,30 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
+[[package]]
+name = "windows"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647"
+dependencies = [
+ "windows_aarch64_msvc 0.37.0",
+ "windows_i686_gnu 0.37.0",
+ "windows_i686_msvc 0.37.0",
+ "windows_x86_64_gnu 0.37.0",
+ "windows_x86_64_msvc 0.37.0",
+]
+
 [[package]]
 name = "windows-sys"
 version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
 dependencies = [
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_msvc",
+ "windows_aarch64_msvc 0.36.1",
+ "windows_i686_gnu 0.36.1",
+ "windows_i686_msvc 0.36.1",
+ "windows_x86_64_gnu 0.36.1",
+ "windows_x86_64_msvc 0.36.1",
 ]
 
 [[package]]
@@ -3114,30 +3178,60 @@ version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
 
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a"
+
 [[package]]
 name = "windows_i686_gnu"
 version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
 
+[[package]]
+name = "windows_i686_gnu"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1"
+
 [[package]]
 name = "windows_i686_msvc"
 version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
 
+[[package]]
+name = "windows_i686_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c"
+
 [[package]]
 name = "windows_x86_64_gnu"
 version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
 
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d"
+
 [[package]]
 name = "windows_x86_64_msvc"
 version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
 
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d"
+
 [[package]]
 name = "xxhash-rust"
 version = "0.8.5"
diff --git a/Cargo.toml b/Cargo.toml
index ade44d36c..4bfde60ae 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,8 +5,10 @@ members = [
     "czkawka_gui",
 ]
 [profile.release]
-# Panic = "abort" will crash entire app when processing invalid image file.
-# Since crash happens in external library, this is only way to handle this(I think).
+# panic = "unwind" in opposite to "abort", allows to catch panic!()
+# Since Czkawka parse different types of files with few libraries, it is possible
+# that some files will cause crash, so at this moment I don't recommend to use "abort"
+# until you are ready to occasional crashes
 panic = "unwind"
 
 # LTO setting is disabled by default, because release mode is usually needed to develop app and compilation with LTO would take a lot of time
diff --git a/Changelog.md b/Changelog.md
index 3432996e7..19905acd5 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,14 @@
+## Version 5.0.0 - ?.?.2022r
+- GTK 4 port - [#466](https://github.com/qarmin/czkawka/pull/466)
+- Resize preview with window - [#466](https://github.com/qarmin/czkawka/pull/466)
+- Fix removing only one item from list view - [#466](https://github.com/qarmin/czkawka/pull/466)
+- Fix showing help command in duplicate CLI mode - [#720](https://github.com/qarmin/czkawka/pull/720)
+- Fix freeze when not choosing any tag in similiar music mode - [TODO]()
+- Read more tags from music files - [#705](https://github.com/qarmin/czkawka/pull/705)
+- Improve checking for invalid extensions - [#705](https://github.com/qarmin/czkawka/pull/705)
+- Support for finding invalid PDF files - [#705](https://github.com/qarmin/czkawka/pull/705)
+- Re-enable checking for broken music files(`libasound.so.2` no longer needed) - [#705](https://github.com/qarmin/czkawka/pull/705)
+
 ## Version 4.1.0 - 24.04.2022r
 - New mode - finding files whose content not match with their extension - [#678](https://github.com/qarmin/czkawka/pull/678)
 - Builtin icons - no more invalid, theme/OS dependant icons - [#659](https://github.com/qarmin/czkawka/pull/659)
diff --git a/czkawka_core/src/common.rs b/czkawka_core/src/common.rs
index 337a9ee9d..b13fe0ed0 100644
--- a/czkawka_core/src/common.rs
+++ b/czkawka_core/src/common.rs
@@ -28,10 +28,7 @@ pub const ZIP_FILES_EXTENSIONS: &[&str] = &[".zip"];
 pub const PDF_FILES_EXTENSIONS: &[&str] = &[".pdf"];
 
 pub const AUDIO_FILES_EXTENSIONS: &[&str] = &[
-    ".mp3", ".flac", ".wav", ".ogg", ".m4a", ".aac", ".aiff", ".pcm", ".aif", ".aiff", ".aifc", ".m3a", ".mp2", ".mp4a", ".mp2a", ".mpga", ".wave", ".weba",
-    ".wma",
-    /*".ac3",*/
-    /*".oga", https://github.com/Serial-ATA/lofty-rs/issues/47#issuecomment-1120414259*/
+    ".mp3", ".flac", ".wav", ".ogg", ".m4a", ".aac", ".aiff", ".pcm", ".aif", ".aiff", ".aifc", ".m3a", ".mp2", ".mp4a", ".mp2a", ".mpga", ".wave", ".weba", ".wma", ".oga",
 ];
 
 pub const VIDEO_FILES_EXTENSIONS: &[&str] = &[
diff --git a/czkawka_gui/Cargo.toml b/czkawka_gui/Cargo.toml
index 4a80c4930..8cc1fdecd 100644
--- a/czkawka_gui/Cargo.toml
+++ b/czkawka_gui/Cargo.toml
@@ -38,7 +38,7 @@ regex = "1.5.5"
 image_hasher = "1.0.0"
 
 # Move files to trash
-trash = "1.3.0"
+trash = "2.1.4"
 
 # For moving files(why std::fs doesn't have such features)
 fs_extra = "1.2.0"
diff --git a/czkawka_gui/src/connect_things/connect_button_search.rs b/czkawka_gui/src/connect_things/connect_button_search.rs
index 023c3e37c..26c64d348 100644
--- a/czkawka_gui/src/connect_things/connect_button_search.rs
+++ b/czkawka_gui/src/connect_things/connect_button_search.rs
@@ -441,6 +441,11 @@ pub fn connect_button_search(
                     );
                     entry_info.set_text(&flg!("search_not_choosing_any_music"));
                     show_dialog.store(false, Ordering::Relaxed);
+
+                    notebook_main.set_sensitive(true);
+                    notebook_upper.set_sensitive(true);
+                    button_settings.set_sensitive(true);
+                    button_app_info.set_sensitive(true);
                 }
             }
             NotebookMainEnum::Symlinks => {
diff --git a/czkawka_gui/src/connect_things/connect_button_stop.rs b/czkawka_gui/src/connect_things/connect_button_stop.rs
index 322d62cd6..1d7795627 100644
--- a/czkawka_gui/src/connect_things/connect_button_stop.rs
+++ b/czkawka_gui/src/connect_things/connect_button_stop.rs
@@ -26,7 +26,6 @@ pub fn connect_button_stop(gui_data: &GuiData) {
     let button_stop_in_dialog = gui_data.progress_window.button_stop_in_dialog.clone();
     let stop_dialog = gui_data.progress_window.window_progress.clone();
     let stop_sender = gui_data.stop_sender.clone();
-    // TODO GTK 4 change this to connect released, not sure why not works here
 
     button_stop_in_dialog.connect_clicked(move |_a| {
         stop_dialog.set_title(Some(&format!("{} ({})", flg!("window_progress_title"), flg!("progress_stop_additional_message"))));
diff --git a/czkawka_gui/src/initialize_gui.rs b/czkawka_gui/src/initialize_gui.rs
index dd228b5ac..df9254671 100644
--- a/czkawka_gui/src/initialize_gui.rs
+++ b/czkawka_gui/src/initialize_gui.rs
@@ -538,16 +538,17 @@ fn connect_event_mouse(gui_data: &GuiData) {
         let check_button_settings_show_preview = gui_data.settings.check_button_settings_show_preview_duplicates.clone();
         let image_preview = gui_data.main_notebook.image_preview_duplicates.clone();
         let preview_path = gui_data.preview_path.clone();
+        let tree_view = gui_data.main_notebook.tree_view_duplicate_finder.clone();
 
-        let gc = gui_data.main_notebook.gc_tree_view_duplicate_finder.clone();
+        tree_view.set_property("activate-on-single-click", true);
 
-        // TODO GTK 4, currently not works, connect_pressed shows previous thing
-        gc.connect_released(move |gc, _event, _, _| {
-            let tree_view = gc.widget().downcast::<gtk4::TreeView>().unwrap();
+        // TODO GTK 4, currently not works, connect_pressed shows previous thing - https://gitlab.gnome.org/GNOME/gtk/-/issues/4939
+        // Use connect_released when it will be fixed, currently using connect_row_activated workaround
+        tree_view.connect_row_activated(move |tree_view, _b, _c| {
             let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::Duplicate as usize];
             let preview_path = preview_path.clone();
             show_preview(
-                &tree_view,
+                tree_view,
                 &text_view_errors,
                 &check_button_settings_show_preview,
                 &image_preview,
@@ -563,16 +564,16 @@ fn connect_event_mouse(gui_data: &GuiData) {
         let check_button_settings_show_preview = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
         let preview_path = gui_data.preview_path.clone();
         let image_preview = gui_data.main_notebook.image_preview_similar_images.clone();
+        let tree_view = gui_data.main_notebook.tree_view_similar_images_finder.clone();
 
-        let gc = gui_data.main_notebook.gc_tree_view_similar_images_finder.clone();
+        tree_view.set_property("activate-on-single-click", true);
 
         // TODO GTK 4, currently not works, connect_pressed shows previous thing
-        gc.connect_released(move |gc, _event, _, _| {
-            let tree_view = gc.widget().downcast::<gtk4::TreeView>().unwrap();
+        tree_view.connect_row_activated(move |tree_view, _b, _c| {
             let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::SimilarImages as usize];
             let preview_path = preview_path.clone();
             show_preview(
-                &tree_view,
+                tree_view,
                 &text_view_errors,
                 &check_button_settings_show_preview,
                 &image_preview,


Test patch: