diff --git a/SOURCES/properties-window-Fix-crashes-when-cancelled.patch b/SOURCES/properties-window-Fix-crashes-when-cancelled.patch new file mode 100644 index 0000000..b974769 --- /dev/null +++ b/SOURCES/properties-window-Fix-crashes-when-cancelled.patch @@ -0,0 +1,62 @@ +From a20229f185b494a107634c4b99b2be1ce962a277 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Thu, 26 Sep 2019 11:06:45 +0200 +Subject: [PATCH] properties-window: Fix crashes when cancelled + +Nautilus crashes on the "timed_wait_free: assertion failed: +(g_hash_table_lookup (timed_wait_hash_table, wait) != NULL)" assertion +when the creating of the properties window is cancelled. This is because +the timed wait has been already removed. Let's don't remove the wait +when cancelled in order to prevent the crashes. +--- + src/nautilus-properties-window.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c +index 969e3ffea..0112aeb3c 100644 +--- a/src/nautilus-properties-window.c ++++ b/src/nautilus-properties-window.c +@@ -148,6 +148,7 @@ typedef struct + NautilusPropertiesWindowCallback callback; + gpointer callback_data; + NautilusPropertiesWindow *window; ++ gboolean cancelled; + } StartupData; + + /* drag and drop definitions */ +@@ -5229,6 +5230,8 @@ get_existing_window (GList *file_list) + static void + properties_window_finish (StartupData *data) + { ++ gboolean cancel_timed_wait; ++ + if (data->parent_widget != NULL) + { + g_signal_handlers_disconnect_by_data (data->parent_widget, +@@ -5240,14 +5243,21 @@ properties_window_finish (StartupData *data) + data); + } + +- remove_pending (data, TRUE, (data->window == NULL), FALSE); ++ cancel_timed_wait = (data->window == NULL && !data->cancelled); ++ remove_pending (data, TRUE, cancel_timed_wait, FALSE); ++ + startup_data_free (data); + } + + static void + cancel_create_properties_window_callback (gpointer callback_data) + { +- properties_window_finish ((StartupData *) callback_data); ++ StartupData *data; ++ ++ data = callback_data; ++ data->cancelled = TRUE; ++ ++ properties_window_finish (data); + } + + static void +-- +2.23.0 + diff --git a/SOURCES/properties-window-Fix-crashes-when-opened-multiple-t.patch b/SOURCES/properties-window-Fix-crashes-when-opened-multiple-t.patch new file mode 100644 index 0000000..47ceb5e --- /dev/null +++ b/SOURCES/properties-window-Fix-crashes-when-opened-multiple-t.patch @@ -0,0 +1,33 @@ +From c4b567936ebbba8479f6641c89b3980f7963b765 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Thu, 26 Sep 2019 11:07:35 +0200 +Subject: [PATCH] properties-window: Fix crashes when opened multiple times + +Nautilus crashes with segmentation fault when closing the properties dialog +after it has been opened mutliple times for the same file. This can't be +reproduced over Nautilus as it uses modal dialogs, however, it can be simply +reproduced over the Desktop Icons extension. Let's check the pending_key +variable before used to be sure it is not NULL to fix this crashes. +--- + src/nautilus-properties-window.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c +index 0112aeb3c..f6b2f21a6 100644 +--- a/src/nautilus-properties-window.c ++++ b/src/nautilus-properties-window.c +@@ -5297,7 +5297,10 @@ remove_pending (StartupData *startup_data, + eel_timed_wait_stop + (cancel_create_properties_window_callback, startup_data); + } +- g_hash_table_remove (pending_lists, startup_data->pending_key); ++ if (startup_data->pending_key != NULL) ++ { ++ g_hash_table_remove (pending_lists, startup_data->pending_key); ++ } + } + + static gboolean +-- +2.23.0 + diff --git a/SOURCES/properties-window-Fix-criticals-when-closing.patch b/SOURCES/properties-window-Fix-criticals-when-closing.patch new file mode 100644 index 0000000..cc413e5 --- /dev/null +++ b/SOURCES/properties-window-Fix-criticals-when-closing.patch @@ -0,0 +1,32 @@ +From 97ec09e79d0a92f57ef6bb6b7e042921f5c3c3c8 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Tue, 24 Sep 2019 17:06:15 +0200 +Subject: [PATCH] properties-window: Fix criticals when closing + +The "eel_timed_wait_stop: assertion 'wait != NULL' failed" critical +is printed when closing the properties window since commit c8c2fab2. +This is because the timed wait has been already removed. Let's remove +the wait when closing only if it has not been yet removed in order to +prevent this criticals. + +Fixes: https://gitlab.gnome.org/GNOME/nautilus/issues/1075 +--- + src/nautilus-properties-window.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c +index 9d9bd1c54..969e3ffea 100644 +--- a/src/nautilus-properties-window.c ++++ b/src/nautilus-properties-window.c +@@ -5240,7 +5240,7 @@ properties_window_finish (StartupData *data) + data); + } + +- remove_pending (data, TRUE, TRUE, FALSE); ++ remove_pending (data, TRUE, (data->window == NULL), FALSE); + startup_data_free (data); + } + +-- +2.23.0 + diff --git a/SOURCES/search-engine-tracker-Do-not-lose-filename-results-d.patch b/SOURCES/search-engine-tracker-Do-not-lose-filename-results-d.patch new file mode 100644 index 0000000..d9eed95 --- /dev/null +++ b/SOURCES/search-engine-tracker-Do-not-lose-filename-results-d.patch @@ -0,0 +1,90 @@ +diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c +index 66494cae8..32b6039a9 100644 +--- a/src/nautilus-search-engine-tracker.c ++++ b/src/nautilus-search-engine-tracker.c +@@ -286,6 +286,12 @@ search_finished_idle (gpointer user_data) + return FALSE; + } + ++/* This is used to compensate rank if fts:rank is not set (resp. fts:match is ++ * not used). The value was determined experimentally. I am conviced that ++ * fts:rank is currently always set to 5.0 in case of filename match. ++ */ ++#define FILENAME_RANK 5.0 ++ + static void + nautilus_search_engine_tracker_start (NautilusSearchProvider *provider) + { +@@ -327,7 +333,11 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider) + mimetypes = nautilus_query_get_mime_types (tracker->query); + mime_count = g_list_length (mimetypes); + +- sparql = g_string_new ("SELECT DISTINCT nie:url(?urn) fts:rank(?urn) nfo:fileLastModified(?urn) nfo:fileLastAccessed(?urn)"); ++ sparql = g_string_new ("SELECT DISTINCT" ++ " nie:url(?urn)" ++ " xsd:double(COALESCE(?rank2, ?rank1)) AS ?rank" ++ " nfo:fileLastModified(?urn)" ++ " nfo:fileLastAccessed(?urn)"); + + if (tracker->fts_enabled) + { +@@ -342,16 +352,31 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider) + " tracker:available true;" + " nie:url ?url"); + +- if (*search_text) ++ if (mime_count > 0) + { +- g_string_append_printf (sparql, "; fts:match '\"%s\"*'", search_text); ++ g_string_append (sparql, "; nie:mimeType ?mime"); + } + +- if (mime_count > 0) ++ if (tracker->fts_enabled) + { +- g_string_append (sparql, "; nie:mimeType ?mime"); ++ /* Use fts:match only for content search to not lose some filename results due to stop words. */ ++ g_string_append_printf (sparql, ++ " {" ++ " ?urn fts:match '\"nie:plainTextContent\" : \"%s\"*' ." ++ " BIND(fts:rank(?urn) AS ?rank1) ." ++ " } UNION", ++ search_text); + } + ++ g_string_append_printf (sparql, ++ " {" ++ " ?urn nfo:fileName ?filename ." ++ " FILTER(fn:contains(fn:lower-case(?filename), '%s')) ." ++ " BIND(%f AS ?rank2) ." ++ " }", ++ search_text, ++ FILENAME_RANK); ++ + g_string_append_printf (sparql, " . FILTER( "); + + if (!tracker->recursive) +@@ -363,11 +388,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider) + g_string_append_printf (sparql, "tracker:uri-is-descendant('%s', ?url)", location_uri); + } + +- if (!tracker->fts_enabled) +- { +- g_string_append_printf (sparql, " && fn:contains(fn:lower-case(nfo:fileName(?urn)), '%s')", search_text); +- } +- + date_range = nautilus_query_get_date_range (tracker->query); + if (date_range) + { +@@ -424,7 +444,7 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider) + g_string_append (sparql, ")\n"); + } + +- g_string_append (sparql, ")} ORDER BY DESC (fts:rank(?urn))"); ++ g_string_append (sparql, ")} ORDER BY DESC (?rank)"); + + tracker->cancellable = g_cancellable_new (); + tracker_sparql_connection_query_async (tracker->connection, +-- +2.23.0 + diff --git a/SOURCES/window-Fix-criticals-when-moving-file-to-trash.patch b/SOURCES/window-Fix-criticals-when-moving-file-to-trash.patch new file mode 100644 index 0000000..a553b65 --- /dev/null +++ b/SOURCES/window-Fix-criticals-when-moving-file-to-trash.patch @@ -0,0 +1,35 @@ +From 668e0673a7ea3fe4cb6c99bc7b56bc52597e2061 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Wed, 25 Sep 2019 09:16:44 +0200 +Subject: [PATCH] window: Fix criticals when moving file to trash + +The "gtk_revealer_get_transition_type: assertion 'GTK_IS_REVEALER (revealer)' +failed" critical is printed when moving file to trash after closing a window. +This is because the "undo-changed" signal handler is not disconnected when +the window is destroyed. Let's use g_signal_connect_object() to ensure +disconnection and prevent those criticals. + +Fixes: https://gitlab.gnome.org/GNOME/nautilus/issues/1076 +--- + src/nautilus-window.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/nautilus-window.c b/src/nautilus-window.c +index 285a6a6ce..056c75c7a 100644 +--- a/src/nautilus-window.c ++++ b/src/nautilus-window.c +@@ -2239,8 +2239,9 @@ nautilus_window_constructed (GObject *self) + nautilus_window_set_up_sidebar (window); + + +- g_signal_connect_after (nautilus_file_undo_manager_get (), "undo-changed", +- G_CALLBACK (nautilus_window_on_undo_changed), self); ++ g_signal_connect_object (nautilus_file_undo_manager_get (), "undo-changed", ++ G_CALLBACK (nautilus_window_on_undo_changed), self, ++ G_CONNECT_AFTER); + + /* Is required that the UI is constructed before initializating the actions, since + * some actions trigger UI widgets to show/hide. */ +-- +2.23.0 + diff --git a/SPECS/nautilus.spec b/SPECS/nautilus.spec index 3abd3b4..e218d2a 100644 --- a/SPECS/nautilus.spec +++ b/SPECS/nautilus.spec @@ -8,7 +8,7 @@ Name: nautilus Version: 3.28.1 -Release: 10%{?dist} +Release: 12%{?dist} Summary: File manager for GNOME License: GPLv3+ @@ -39,6 +39,17 @@ Patch20: window-Add-website-link-to-About-dialog.patch Patch21: appdata-Use-Files-instead-of-Nautilus.patch Patch22: docs-Add-nautilus-autorun-software-man-page.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1721133 +Patch23: window-Fix-criticals-when-moving-file-to-trash.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1721124 +Patch24: properties-window-Fix-criticals-when-closing.patch +Patch25: properties-window-Fix-crashes-when-cancelled.patch +Patch26: properties-window-Fix-crashes-when-opened-multiple-t.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1646352 +Patch27: search-engine-tracker-Do-not-lose-filename-results-d.patch + BuildRequires: gtk-doc BuildRequires: meson BuildRequires: gcc @@ -151,6 +162,13 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop %{_datadir}/gir-1.0/*.gir %changelog +* Mon Dec 9 2019 Ondrej Holy - 3.28.1-12 +- Do not lose filename results due to stop words (rhbz#1646352) + +* Thu Sep 26 2019 Ondrej Holy - 3.28.1-11 +- Fix criticals when moving file to trash (rhbz#1721133) +- Fix criticals when closing properties window (rhbz#1721124) + * Thu Jul 4 2019 Ondrej Holy - 3.28.1-10 - Add screenshots for GNOME Software in Appdata file (rhbz#1725107) - Add website link to About dialog (rhbz#1725101)