Merge ~3v1n0/ubuntu/+source/nautilus:ubuntu/master into ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/master

Proposed by Marco Trevisan (Treviño)
Status: Merged
Merged at revision: 6513d3e3bf92c3219d408eab4bedaccd80573669
Proposed branch: ~3v1n0/ubuntu/+source/nautilus:ubuntu/master
Merge into: ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/master
Diff against target: 842 lines (+347/-148)
8 files modified
debian/changelog (+19/-0)
debian/patches/0015-tracker-search-engine-don-t-start-it-if-not-availabl.patch (+7/-7)
debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch (+18/-10)
debian/patches/0018-search-engine-add-locate-based-search-engine.patch (+7/-7)
debian/patches/file-view-Always-unset-pending_selection-after-freeing-it.patch (+80/-0)
debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mo.patch (+45/-0)
debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch (+168/-123)
debian/patches/series (+3/-1)
Reviewer Review Type Date Requested Status
Sebastien Bacher Approve
Review via email: mp+351021@code.launchpad.net

Description of the change

Re-added a patch that disappeared on rebase, added one more fix.

To post a comment you must log in.
Revision history for this message
Sebastien Bacher (seb128) wrote :

looks fine to me, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/debian/changelog b/debian/changelog
index 47f5ac4..9f61c50 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,22 @@
1nautilus (1:3.26.4-0ubuntu2) UNRELEASED; urgency=medium
2
3 * debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mo.patch:
4 - don't crash if selecting a volume that is not mounted (LP: #1764779)
5 + patch re-added after gbp deleted on importing new upstream release
6 * debian/patches/file-view-Always-unset-pending_selection-after-freeing-it.patch:
7 - don't crash when try to select a file multiple times in a single run
8 (LP: #1713581)
9 * debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch:
10 - Apply the upstream version of it (with 3.26 changes)
11 * debian/patches/0015-tracker-search-engine-don-t-start-it-if-not-availabl.patch,
12 debian/patches/0018-search-engine-add-locate-based-search-engine.patch,
13 debian/patches/file-view-Always-unset-pending_selection-after-freeing-it.patch,
14 - Refresh as per recursive-query patch update
15 * 0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch:
16 - Refresh with upstream merged-description
17
18 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 26 Jul 2018 03:22:41 +0200
19
1nautilus (1:3.26.4-0ubuntu1) cosmic; urgency=medium20nautilus (1:3.26.4-0ubuntu1) cosmic; urgency=medium
221
3 * New upstream release: 3.26.4 (LP: #1782681, LP: #1765776)22 * New upstream release: 3.26.4 (LP: #1782681, LP: #1765776)
diff --git a/debian/patches/0015-tracker-search-engine-don-t-start-it-if-not-availabl.patch b/debian/patches/0015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
index 4fd9909..4cc55ed 100644
--- a/debian/patches/0015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
+++ b/debian/patches/0015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
@@ -7,7 +7,7 @@ Subject: tracker-search-engine: don't start it if not available on system
7 1 file changed, 20 insertions(+), 4 deletions(-)7 1 file changed, 20 insertions(+), 4 deletions(-)
88
9diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c9diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c
10index 4c917dd..8218ea3 10064410index 8885ca4..050716d 100644
11--- a/src/nautilus-search-engine-tracker.c11--- a/src/nautilus-search-engine-tracker.c
12+++ b/src/nautilus-search-engine-tracker.c12+++ b/src/nautilus-search-engine-tracker.c
13@@ -42,6 +42,7 @@ struct _NautilusSearchEngineTracker13@@ -42,6 +42,7 @@ struct _NautilusSearchEngineTracker
@@ -18,7 +18,7 @@ index 4c917dd..8218ea3 100644
18 gboolean recursive;18 gboolean recursive;
19 gboolean fts_enabled;19 gboolean fts_enabled;
20 20
21@@ -305,8 +306,15 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)21@@ -304,8 +305,15 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
22 return;22 return;
23 }23 }
24 24
@@ -35,16 +35,16 @@ index 4c917dd..8218ea3 100644
35 tracker->query_pending = TRUE;35 tracker->query_pending = TRUE;
36 36
37 g_object_notify (G_OBJECT (provider), "running");37 g_object_notify (G_OBJECT (provider), "running");
38@@ -472,6 +480,9 @@ nautilus_search_engine_tracker_set_query (NautilusSearchProvider *provider,38@@ -471,6 +479,9 @@ nautilus_search_engine_tracker_set_query (NautilusSearchProvider *provider,
39 39
40 tracker = NAUTILUS_SEARCH_ENGINE_TRACKER (provider);40 g_clear_object (&tracker->query);
41 41
42+ if (!tracker->available)42+ if (!tracker->available)
43+ return;43+ return;
44+44+
45 g_object_ref (query);45 tracker->query = g_object_ref (query);
46 g_clear_object (&tracker->query);46 tracker->recursive = is_recursive_search (NAUTILUS_SEARCH_ENGINE_TYPE_INDEXED,
47 tracker->query = query;47 nautilus_query_get_recursive (query),
48@@ -539,16 +550,21 @@ static void48@@ -539,16 +550,21 @@ static void
49 nautilus_search_engine_tracker_init (NautilusSearchEngineTracker *engine)49 nautilus_search_engine_tracker_init (NautilusSearchEngineTracker *engine)
50 {50 {
diff --git a/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch b/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
index 9011e04..f80997f 100644
--- a/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
+++ b/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
@@ -1,9 +1,19 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Wed, 21 Feb 2018 17:05:51 +01002Date: Wed, 21 Feb 2018 17:05:51 +0100
3Subject: search-engine: add a recent-search-engine listing GtkRecentManager3Subject: search-engine: add a recent-search-engine listing GtkRecentManager
4 stuff4 entries
55
6Using GtkRecent items as search engine source in nautilus6Using GtkRecent items as search engine source in nautilus.
7The main reason for this, is being able to get fast results on recently-used
8files from the shell search provider.
9
10This is disabled when recursive searches are disabled, as there's no need to go
11through for recent files if no recursive (or indexed) search is enabled as the
12simple engine will be already fast enough, while running this engine could be
13just a waste.
14
15Origin: upstream
16Applied-Upstream: https://gitlab.gnome.org/GNOME/nautilus/commit/69686372fd6e6
7---17---
8 src/meson.build | 2 +18 src/meson.build | 2 +
9 src/nautilus-search-engine-recent.c | 427 ++++++++++++++++++++++++++++++++++++19 src/nautilus-search-engine-recent.c | 427 ++++++++++++++++++++++++++++++++++++
@@ -502,18 +512,16 @@ index 0000000..bcd73b9
502+512+
503+#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */513+#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */
504diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c514diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
505index a545160..68b6a4d 100644515index 3a0c9d4..793b831 100644
506--- a/src/nautilus-search-engine.c516--- a/src/nautilus-search-engine.c
507+++ b/src/nautilus-search-engine.c517+++ b/src/nautilus-search-engine.c
508@@ -21,6 +21,7 @@518@@ -30,11 +30,13 @@
509 519 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
510 #include <config.h>520 #include "nautilus-debug.h"
511 #include "nautilus-search-engine.h"
512+#include "nautilus-search-engine-recent.h"
513 #include "nautilus-search-engine-simple.h"521 #include "nautilus-search-engine-simple.h"
514 #include "nautilus-search-engine-private.h"522+#include "nautilus-search-engine-recent.h"
523 #include "nautilus-search-engine-tracker.h"
515 524
516@@ -35,6 +36,7 @@
517 typedef struct525 typedef struct
518 {526 {
519 NautilusSearchEngineTracker *tracker;527 NautilusSearchEngineTracker *tracker;
diff --git a/debian/patches/0018-search-engine-add-locate-based-search-engine.patch b/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
index c0d37b9..91a7ec0 100644
--- a/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
+++ b/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
@@ -678,17 +678,17 @@ index 0000000..ac5e3fc
678+678+
679+#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */679+#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */
680diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c680diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
681index 68b6a4d..84a88fa 100644681index 793b831..902d483 100644
682--- a/src/nautilus-search-engine.c682--- a/src/nautilus-search-engine.c
683+++ b/src/nautilus-search-engine.c683+++ b/src/nautilus-search-engine.c
684@@ -22,6 +22,7 @@684@@ -29,6 +29,7 @@
685 #include <config.h>685 #include <glib/gi18n.h>
686 #include "nautilus-search-engine.h"686 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
687 #include "nautilus-search-engine-recent.h"687 #include "nautilus-debug.h"
688+#include "nautilus-search-engine-locate.h"688+#include "nautilus-search-engine-locate.h"
689 #include "nautilus-search-engine-simple.h"689 #include "nautilus-search-engine-simple.h"
690 #include "nautilus-search-engine-private.h"690 #include "nautilus-search-engine-recent.h"
691 691 #include "nautilus-search-engine-tracker.h"
692@@ -37,6 +38,7 @@ typedef struct692@@ -37,6 +38,7 @@ typedef struct
693 {693 {
694 NautilusSearchEngineTracker *tracker;694 NautilusSearchEngineTracker *tracker;
diff --git a/debian/patches/file-view-Always-unset-pending_selection-after-freeing-it.patch b/debian/patches/file-view-Always-unset-pending_selection-after-freeing-it.patch
695new file mode 100644695new file mode 100644
index 0000000..4191e7e
--- /dev/null
+++ b/debian/patches/file-view-Always-unset-pending_selection-after-freeing-it.patch
@@ -0,0 +1,80 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Thu, 26 Jul 2018 04:55:19 +0200
3Subject: file-view: Always unset pending_selection after freeing it
4
5When a file view was loaded with a pending selection, and not all the files were
6seen yet, the private pending_selection list was properly free'd, but the pointer
7was not cleared, causing a crash when `nautilus_files_view_set_selection` was
8called again, as it was trying to deeply copy a list pointed by this invalid
9reference.
10
11So, removing the unneeded `pending_selection` temporary pointer from the main
12function scope, as it only confuses, while use it (with an autolist) when we
13need to pass the previous `priv->pending_selection` (stealing its ownership)
14to set_selection again.
15
16Eventually use a g_clear_pointer to free the list and nullify its priv reference
17
18Fixes #295
19
20(cherry picked from commit ae3382a281b018337a8032ef13663ec2d9c7fd6c)
21
22Bug-GNOME: https://gitlab.gnome.org/GNOME/nautilus/issues/295
23Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1713581
24Applied-Upstream: commit: https://gitlab.gnome.org/GNOME/nautilus/commit/834c4e7f
25---
26 src/nautilus-files-view.c | 16 +++++++---------
27 1 file changed, 7 insertions(+), 9 deletions(-)
28
29diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
30index f916b05..87a4a42 100644
31--- a/src/nautilus-files-view.c
32+++ b/src/nautilus-files-view.c
33@@ -3587,7 +3587,6 @@ done_loading (NautilusFilesView *view,
34 gboolean all_files_seen)
35 {
36 NautilusFilesViewPrivate *priv;
37- GList *pending_selection;
38 GList *selection;
39 gboolean do_reveal = FALSE;
40
41@@ -3608,21 +3607,23 @@ done_loading (NautilusFilesView *view,
42 nautilus_files_view_update_toolbar_menus (view);
43 reset_update_interval (view);
44
45- pending_selection = priv->pending_selection;
46 selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
47
48 if (nautilus_view_is_searching (NAUTILUS_VIEW (view)) &&
49- all_files_seen && !selection && !pending_selection)
50+ all_files_seen && selection == NULL && priv->pending_selection == NULL)
51 {
52 nautilus_files_view_select_first (view);
53 do_reveal = TRUE;
54 }
55- else if (pending_selection != NULL && all_files_seen)
56+ else if (priv->pending_selection != NULL && all_files_seen)
57 {
58- priv->pending_selection = NULL;
59+ GList *pending_selection;
60+ pending_selection = g_steal_pointer (&priv->pending_selection);
61
62 nautilus_files_view_call_set_selection (view, pending_selection);
63 do_reveal = TRUE;
64+
65+ nautilus_file_list_free (pending_selection);
66 }
67
68 if (selection)
69@@ -3630,10 +3631,7 @@ done_loading (NautilusFilesView *view,
70 g_list_free_full (selection, g_object_unref);
71 }
72
73- if (pending_selection)
74- {
75- g_list_free_full (pending_selection, g_object_unref);
76- }
77+ g_clear_pointer (&priv->pending_selection, nautilus_file_list_free);
78
79 if (do_reveal)
80 {
diff --git a/debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mo.patch b/debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mo.patch
0new file mode 10064481new file mode 100644
index 0000000..e43f1d3
--- /dev/null
+++ b/debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mo.patch
@@ -0,0 +1,45 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Tue, 17 Jul 2018 04:23:58 +0200
3Subject: nautilusgtkplacesview: show error if volume is not mounted
4
5Fixes crash as location would be NULL afterwards.
6
7Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1764779
8Forwarded: not-needed
9---
10 src/gtk/nautilusgtkplacesview.c | 20 +++++++++++++++-----
11 1 file changed, 15 insertions(+), 5 deletions(-)
12
13diff --git a/src/gtk/nautilusgtkplacesview.c b/src/gtk/nautilusgtkplacesview.c
14index b72085b..c5e98a5 100644
15--- a/src/gtk/nautilusgtkplacesview.c
16+++ b/src/gtk/nautilusgtkplacesview.c
17@@ -1329,13 +1329,23 @@ volume_mount_ready_cb (GObject *source_volume,
18 GFile *root;
19
20 mount = g_volume_get_mount (volume);
21- root = g_mount_get_default_location (mount);
22
23- if (priv->should_open_location)
24- emit_open_location (NAUTILUS_GTK_PLACES_VIEW (user_data), root, priv->open_flags);
25+ if (G_IS_MOUNT (mount))
26+ {
27+ root = g_mount_get_default_location (mount);
28
29- g_object_unref (mount);
30- g_object_unref (root);
31+ if (priv->should_open_location)
32+ emit_open_location (NAUTILUS_GTK_PLACES_VIEW (user_data), root, priv->open_flags);
33+
34+ g_object_unref (mount);
35+ g_object_unref (root);
36+ }
37+ else
38+ {
39+ emit_show_error_message (NAUTILUS_GTK_PLACES_VIEW(user_data),
40+ _("Unable to access location"),
41+ _("volume not mounted"));
42+ }
43 }
44
45 update_places (view);
diff --git a/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch b/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
index 641fab5..fddae3e 100644
--- a/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
+++ b/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
@@ -1,32 +1,36 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Tue, 17 Jul 2018 02:35:20 +02002Date: Thu, 26 Jul 2018 22:01:57 +0200
3Subject: query: add recursive flags and use it in search-engines3Subject: query: add recursive flags and use it in search-engines
44
5Forwarded: yes, https://gitlab.gnome.org/GNOME/nautilus/merge_requests/2495Forwarded: yes, https://gitlab.gnome.org/GNOME/nautilus/merge_requests/249
6Bug-Ubuntu: https://bugs.launchpad.net/bugs/17670276Bug-Ubuntu: https://bugs.launchpad.net/bugs/1767027
7Applied-Upstream: 3.29
7---8---
8 src/meson.build | 1 +9 src/meson.build | 1 +
9 src/nautilus-application.c | 11 ++----10 src/nautilus-application.c | 11 ++----
10 src/nautilus-application.h | 3 +-11 src/nautilus-application.h | 3 +-
11 src/nautilus-directory-async.c | 5 ++-12 src/nautilus-directory-async.c | 4 +-
12 src/nautilus-file-private.h | 3 +-13 src/nautilus-file-private.h | 3 +-
14 src/nautilus-file-utilities.c | 48 +++++++++++++++++++++++
15 src/nautilus-file-utilities.h | 6 +++
13 src/nautilus-file.c | 28 ++++++++++++++16 src/nautilus-file.c | 28 ++++++++++++++
14 src/nautilus-file.h | 2 +17 src/nautilus-file.h | 2 +
15 src/nautilus-query-editor.c | 61 +++++++++++++++++-------------18 src/nautilus-query-editor.c | 20 +++++-----
16 src/nautilus-query.c | 28 +++++++-------19 src/nautilus-query.c | 28 +++++++-------
17 src/nautilus-query.h | 14 +++++--20 src/nautilus-query.h | 14 +++++--
18 src/nautilus-search-directory.c | 6 ---21 src/nautilus-search-directory.c | 6 ---
19 src/nautilus-search-engine-private.h | 34 +++++++++++++++++22 src/nautilus-search-engine-private.h | 31 +++++++++++++++
20 src/nautilus-search-engine-simple.c | 72 ++++++++----------------------------23 src/nautilus-search-engine-simple.c | 74 +++++++++---------------------------
24 src/nautilus-search-engine-simple.h | 2 +
21 src/nautilus-search-engine-tracker.c | 16 ++++----25 src/nautilus-search-engine-tracker.c | 16 ++++----
22 src/nautilus-search-engine.c | 36 ++++++++++++++----26 src/nautilus-search-engine.c | 36 +++++++++++++-----
23 src/nautilus-search-engine.h | 2 -27 src/nautilus-search-engine.h | 2 -
24 src/nautilus-shell-search-provider.c | 40 +++++++++++---------28 src/nautilus-shell-search-provider.c | 50 ++++++++++++++++--------
25 src/nautilus-window-slot.c | 19 ++++------29 src/nautilus-window-slot.c | 19 ++++-----
26 src/nautilus-window-slot.h | 2 +-30 src/nautilus-window-slot.h | 2 +-
27 src/nautilus-window.c | 4 +-31 src/nautilus-window.c | 4 +-
28 src/nautilus-window.h | 2 +-32 src/nautilus-window.h | 2 +-
29 21 files changed, 222 insertions(+), 167 deletions(-)33 24 files changed, 261 insertions(+), 151 deletions(-)
30 create mode 100644 src/nautilus-search-engine-private.h34 create mode 100644 src/nautilus-search-engine-private.h
3135
32diff --git a/src/meson.build b/src/meson.build36diff --git a/src/meson.build b/src/meson.build
@@ -80,19 +84,18 @@ index 9cb32c8..47adcc4 100644
80 84
81 void nautilus_application_update_dbus_opened_locations (NautilusApplication *app);85 void nautilus_application_update_dbus_opened_locations (NautilusApplication *app);
82diff --git a/src/nautilus-directory-async.c b/src/nautilus-directory-async.c86diff --git a/src/nautilus-directory-async.c b/src/nautilus-directory-async.c
83index 05a87e3..b519e20 10064487index 05a87e3..a1a27de 100644
84--- a/src/nautilus-directory-async.c88--- a/src/nautilus-directory-async.c
85+++ b/src/nautilus-directory-async.c89+++ b/src/nautilus-directory-async.c
86@@ -4383,6 +4383,8 @@ got_filesystem_info (FilesystemInfoState *state,90@@ -4383,6 +4383,7 @@ got_filesystem_info (FilesystemInfoState *state,
87 file->details->filesystem_readonly =91 file->details->filesystem_readonly =
88 g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY);92 g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY);
89 filesystem_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);93 filesystem_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
90+ file->details->filesystem_remote =94+ file->details->filesystem_remote = g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE);
91+ g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE);
92 if (g_strcmp0 (eel_ref_str_peek (file->details->filesystem_type), filesystem_type) != 0)95 if (g_strcmp0 (eel_ref_str_peek (file->details->filesystem_type), filesystem_type) != 0)
93 {96 {
94 eel_ref_str_unref (file->details->filesystem_type);97 eel_ref_str_unref (file->details->filesystem_type);
95@@ -4465,7 +4467,8 @@ filesystem_info_start (NautilusDirectory *directory,98@@ -4465,7 +4466,8 @@ filesystem_info_start (NautilusDirectory *directory,
96 g_file_query_filesystem_info_async (location,99 g_file_query_filesystem_info_async (location,
97 G_FILE_ATTRIBUTE_FILESYSTEM_READONLY ","100 G_FILE_ATTRIBUTE_FILESYSTEM_READONLY ","
98 G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW ","101 G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW ","
@@ -116,6 +119,84 @@ index cb2bebb..5f6b209 100644
116 119
117 time_t trash_time; /* 0 is unknown */120 time_t trash_time; /* 0 is unknown */
118 time_t recency; /* 0 is unknown */121 time_t recency; /* 0 is unknown */
122diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c
123index e79f37b..f8d8476 100644
124--- a/src/nautilus-file-utilities.c
125+++ b/src/nautilus-file-utilities.c
126@@ -1517,3 +1517,51 @@ nautilus_uri_to_native_uri (const gchar *uri)
127 return NULL;
128 }
129
130+NautilusQueryRecursive
131+location_settings_search_get_recursive (void)
132+{
133+ switch (g_settings_get_enum (nautilus_preferences, "recursive-search"))
134+ {
135+ case NAUTILUS_SPEED_TRADEOFF_ALWAYS:
136+ {
137+ return NAUTILUS_QUERY_RECURSIVE_ALWAYS;
138+ }
139+ break;
140+
141+ case NAUTILUS_SPEED_TRADEOFF_LOCAL_ONLY:
142+ {
143+ return NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY;
144+ }
145+ break;
146+
147+ case NAUTILUS_SPEED_TRADEOFF_NEVER:
148+ {
149+ return NAUTILUS_QUERY_RECURSIVE_NEVER;
150+ }
151+ break;
152+ }
153+
154+ return NAUTILUS_QUERY_RECURSIVE_ALWAYS;
155+}
156+
157+NautilusQueryRecursive
158+location_settings_search_get_recursive_for_location (GFile *location)
159+{
160+ NautilusQueryRecursive recursive = location_settings_search_get_recursive ();
161+
162+ g_return_val_if_fail (location, recursive);
163+
164+ if (recursive == NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY)
165+ {
166+ g_autoptr (NautilusFile) file = nautilus_file_get_existing (location);
167+
168+ g_return_val_if_fail (file != NULL, recursive);
169+
170+ if (nautilus_file_is_remote (file))
171+ {
172+ recursive = NAUTILUS_QUERY_RECURSIVE_NEVER;
173+ }
174+ }
175+
176+ return recursive;
177+}
178diff --git a/src/nautilus-file-utilities.h b/src/nautilus-file-utilities.h
179index b567611..b165d63 100644
180--- a/src/nautilus-file-utilities.h
181+++ b/src/nautilus-file-utilities.h
182@@ -25,6 +25,9 @@
183
184 #include <gio/gio.h>
185 #include <gtk/gtk.h>
186+#include <config.h>
187+
188+#include "nautilus-query.h"
189
190 #define NAUTILUS_DESKTOP_ID "org.gnome.Nautilus.desktop"
191
192@@ -127,4 +130,7 @@ GList * nautilus_file_list_from_uri_list (GList *uris);
193
194 gchar * nautilus_uri_to_native_uri (const gchar *uri);
195
196+NautilusQueryRecursive location_settings_search_get_recursive (void);
197+NautilusQueryRecursive location_settings_search_get_recursive_for_location (GFile *location);
198+
199 #endif /* NAUTILUS_FILE_UTILITIES_H */
119diff --git a/src/nautilus-file.c b/src/nautilus-file.c200diff --git a/src/nautilus-file.c b/src/nautilus-file.c
120index 3f6a69f..63413a6 100644201index 3f6a69f..63413a6 100644
121--- a/src/nautilus-file.c202--- a/src/nautilus-file.c
@@ -176,108 +257,47 @@ index 5b319f9..54fdcb3 100644
176 257
177 /* Permissions. */258 /* Permissions. */
178diff --git a/src/nautilus-query-editor.c b/src/nautilus-query-editor.c259diff --git a/src/nautilus-query-editor.c b/src/nautilus-query-editor.c
179index 94b9c4d..f5260c9 100644260index 94b9c4d..8398ad4 100644
180--- a/src/nautilus-query-editor.c261--- a/src/nautilus-query-editor.c
181+++ b/src/nautilus-query-editor.c262+++ b/src/nautilus-query-editor.c
182@@ -80,33 +80,47 @@ static void nautilus_query_editor_changed (NautilusQueryEditor *editor);263@@ -144,12 +144,12 @@ update_information_label (NautilusQueryEditor *editor)
183
184 G_DEFINE_TYPE_WITH_PRIVATE (NautilusQueryEditor, nautilus_query_editor, GTK_TYPE_SEARCH_BAR);
185
186-static gboolean
187-settings_search_is_recursive (NautilusQueryEditor *editor)
188+static NautilusQueryRecursive
189+settings_search_get_recursive (void)
190+{
191+ switch (g_settings_get_enum (nautilus_preferences, "recursive-search"))
192+ {
193+ case NAUTILUS_SPEED_TRADEOFF_ALWAYS:
194+ return NAUTILUS_QUERY_RECURSIVE_ALWAYS;
195+ case NAUTILUS_SPEED_TRADEOFF_LOCAL_ONLY:
196+ return NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY;
197+ case NAUTILUS_SPEED_TRADEOFF_NEVER:
198+ return NAUTILUS_QUERY_RECURSIVE_NEVER;
199+ }
200+
201+ return NAUTILUS_QUERY_RECURSIVE_ALWAYS;
202+}
203+
204+static NautilusQueryRecursive
205+settings_search_get_recursive_for_location (NautilusQueryEditor *editor)
206 {
207 NautilusQueryEditorPrivate *priv;
208- NautilusFile *file;
209- gboolean recursive;
210+ NautilusQueryRecursive recursive;
211
212 priv = nautilus_query_editor_get_instance_private (editor);
213+ recursive = settings_search_get_recursive ();
214
215- if (!priv->location)
216+ if (priv->location == NULL)
217 {
218- return TRUE;
219+ return recursive;
220 }
221
222- file = nautilus_file_get (priv->location);
223-
224- if (nautilus_file_is_remote (file))
225+ if (recursive == NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY)
226 {
227- recursive = g_settings_get_enum (nautilus_preferences, "recursive-search") == NAUTILUS_SPEED_TRADEOFF_ALWAYS;
228- }
229- else
230- {
231- recursive = g_settings_get_enum (nautilus_preferences, "recursive-search") == NAUTILUS_SPEED_TRADEOFF_LOCAL_ONLY ||
232- g_settings_get_enum (nautilus_preferences, "recursive-search") == NAUTILUS_SPEED_TRADEOFF_ALWAYS;
233- }
234+ NautilusFile *file = nautilus_file_get (priv->location);
235
236- nautilus_file_unref (file);
237+ if (nautilus_file_is_remote (file))
238+ {
239+ recursive = NAUTILUS_QUERY_RECURSIVE_NEVER;
240+ }
241+
242+ nautilus_file_unref (file);
243+ }
244
245 return recursive;
246 }
247@@ -144,12 +158,12 @@ update_information_label (NautilusQueryEditor *editor)
248 fts_sensitive = FALSE;264 fts_sensitive = FALSE;
249 }265 }
250 else if (nautilus_file_is_remote (file) &&266 else if (nautilus_file_is_remote (file) &&
251- !settings_search_is_recursive (editor))267- !settings_search_is_recursive (editor))
252+ settings_search_get_recursive_for_location (editor) == NAUTILUS_QUERY_RECURSIVE_NEVER)268+ location_settings_search_get_recursive_for_location (priv->location) == NAUTILUS_QUERY_RECURSIVE_NEVER)
253 {269 {
254 label = _("Remote location — only searching the current folder");270 label = _("Remote location — only searching the current folder");
255 fts_sensitive = FALSE;271 fts_sensitive = FALSE;
256 }272 }
257- else if (!settings_search_is_recursive (editor))273- else if (!settings_search_is_recursive (editor))
258+ else if (settings_search_get_recursive_for_location (editor) == NAUTILUS_QUERY_RECURSIVE_NEVER)274+ else if (location_settings_search_get_recursive_for_location (priv->location) == NAUTILUS_QUERY_RECURSIVE_NEVER)
259 {275 {
260 label = _("Only searching the current folder");276 label = _("Only searching the current folder");
261 }277 }
262@@ -171,7 +185,7 @@ recursive_search_preferences_changed (GSettings *settings,278@@ -170,17 +170,18 @@ recursive_search_preferences_changed (GSettings *settings,
279 gchar *key,
263 NautilusQueryEditor *editor)280 NautilusQueryEditor *editor)
264 {281 {
282+
265 NautilusQueryEditorPrivate *priv;283 NautilusQueryEditorPrivate *priv;
266- gboolean recursive;284- gboolean recursive;
267+ NautilusQueryRecursive recursive;285+ NautilusQueryRecursive recursive;
268 286
269 priv = nautilus_query_editor_get_instance_private (editor);287 priv = nautilus_query_editor_get_instance_private (editor);
270 288
271@@ -180,7 +194,7 @@ recursive_search_preferences_changed (GSettings *settings,289- if (!priv->location || !priv->query)
290+ if (!priv->query)
291 {
272 return;292 return;
273 }293 }
274 294
275- recursive = settings_search_is_recursive (editor);295- recursive = settings_search_is_recursive (editor);
276+ recursive = settings_search_get_recursive ();296+ recursive = location_settings_search_get_recursive ();
277 if (recursive != nautilus_query_get_recursive (priv->query))297 if (recursive != nautilus_query_get_recursive (priv->query))
278 {298 {
279 nautilus_query_set_recursive (priv->query, recursive);299 nautilus_query_set_recursive (priv->query, recursive);
280@@ -382,7 +396,6 @@ create_query (NautilusQueryEditor *editor)300@@ -382,7 +383,6 @@ create_query (NautilusQueryEditor *editor)
281 NautilusQueryEditorPrivate *priv;301 NautilusQueryEditorPrivate *priv;
282 NautilusQuery *query;302 NautilusQuery *query;
283 NautilusFile *file;303 NautilusFile *file;
@@ -285,7 +305,7 @@ index 94b9c4d..f5260c9 100644
285 gboolean fts_enabled;305 gboolean fts_enabled;
286 306
287 priv = nautilus_query_editor_get_instance_private (editor);307 priv = nautilus_query_editor_get_instance_private (editor);
288@@ -396,11 +409,9 @@ create_query (NautilusQueryEditor *editor)308@@ -396,11 +396,13 @@ create_query (NautilusQueryEditor *editor)
289 309
290 nautilus_query_set_search_content (query, fts_enabled);310 nautilus_query_set_search_content (query, fts_enabled);
291 311
@@ -294,7 +314,11 @@ index 94b9c4d..f5260c9 100644
294 nautilus_query_set_text (query, gtk_entry_get_text (GTK_ENTRY (priv->entry)));314 nautilus_query_set_text (query, gtk_entry_get_text (GTK_ENTRY (priv->entry)));
295 nautilus_query_set_location (query, priv->location);315 nautilus_query_set_location (query, priv->location);
296- nautilus_query_set_recursive (query, recursive);316- nautilus_query_set_recursive (query, recursive);
297+ nautilus_query_set_recursive (query, settings_search_get_recursive ());317+
318+ /* We only set the query using the global setting for recursivity here,
319+ * it's up to the search engine to check weather it can proceed with
320+ * deep search in the current directory or not. */
321+ nautilus_query_set_recursive (query, location_settings_search_get_recursive ());
298 322
299 nautilus_query_editor_set_query (editor, query);323 nautilus_query_editor_set_query (editor, query);
300 324
@@ -437,10 +461,10 @@ index ae710f3..d86fda2 100644
437 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (self->engine));461 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (self->engine));
438diff --git a/src/nautilus-search-engine-private.h b/src/nautilus-search-engine-private.h462diff --git a/src/nautilus-search-engine-private.h b/src/nautilus-search-engine-private.h
439new file mode 100644463new file mode 100644
440index 0000000..8e28ad7464index 0000000..e5f989f
441--- /dev/null465--- /dev/null
442+++ b/src/nautilus-search-engine-private.h466+++ b/src/nautilus-search-engine-private.h
443@@ -0,0 +1,34 @@467@@ -0,0 +1,31 @@
444+/*468+/*
445+ * Copyright (C) 2018 Canonical Ltd.469+ * Copyright (C) 2018 Canonical Ltd.
446+ *470+ *
@@ -462,8 +486,7 @@ index 0000000..8e28ad7
462+ *486+ *
463+ */487+ */
464+488+
465+#ifndef NAUTILUS_SEARCH_ENGINE_PRIVATE_H489+#pragma once
466+#define NAUTILUS_SEARCH_ENGINE_PRIVATE_H
467+490+
468+#include "nautilus-query.h"491+#include "nautilus-query.h"
469+492+
@@ -473,21 +496,20 @@ index 0000000..8e28ad7
473+} NautilusSearchEngineType;496+} NautilusSearchEngineType;
474+497+
475+gboolean is_recursive_search (NautilusSearchEngineType engine_type, NautilusQueryRecursive recursive, GFile *location);498+gboolean is_recursive_search (NautilusSearchEngineType engine_type, NautilusQueryRecursive recursive, GFile *location);
476+
477+#endif /* NAUTILUS_SEARCH_ENGINE_PRIVATE_H */
478diff --git a/src/nautilus-search-engine-simple.c b/src/nautilus-search-engine-simple.c499diff --git a/src/nautilus-search-engine-simple.c b/src/nautilus-search-engine-simple.c
479index 3ec9eb3..0c9ea81 100644500index 3ec9eb3..19a8616 100644
480--- a/src/nautilus-search-engine-simple.c501--- a/src/nautilus-search-engine-simple.c
481+++ b/src/nautilus-search-engine-simple.c502+++ b/src/nautilus-search-engine-simple.c
482@@ -20,9 +20,11 @@503@@ -20,9 +20,11 @@
483 */504 */
484 505
485 #include <config.h>506 #include <config.h>
507+#include "nautilus-search-engine-simple.h"
486+508+
509+#include "nautilus-search-engine-private.h"
487 #include "nautilus-search-hit.h"510 #include "nautilus-search-hit.h"
488 #include "nautilus-search-provider.h"511 #include "nautilus-search-provider.h"
489 #include "nautilus-search-engine-simple.h"512-#include "nautilus-search-engine-simple.h"
490+#include "nautilus-search-engine-private.h"
491 #include "nautilus-ui-utilities.h"513 #include "nautilus-ui-utilities.h"
492 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH514 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
493 #include "nautilus-debug.h"515 #include "nautilus-debug.h"
@@ -647,8 +669,21 @@ index 3ec9eb3..0c9ea81 100644
647 669
648 /**670 /**
649 * NautilusSearchEngine::running:671 * NautilusSearchEngine::running:
672diff --git a/src/nautilus-search-engine-simple.h b/src/nautilus-search-engine-simple.h
673index dd6953f..d50b36d 100644
674--- a/src/nautilus-search-engine-simple.h
675+++ b/src/nautilus-search-engine-simple.h
676@@ -22,6 +22,8 @@
677 #ifndef NAUTILUS_SEARCH_ENGINE_SIMPLE_H
678 #define NAUTILUS_SEARCH_ENGINE_SIMPLE_H
679
680+#include <glib-object.h>
681+
682 G_BEGIN_DECLS
683
684 #define NAUTILUS_TYPE_SEARCH_ENGINE_SIMPLE (nautilus_search_engine_simple_get_type ())
650diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c685diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c
651index 8218ea3..98f3c79 100644686index 4c917dd..8885ca4 100644
652--- a/src/nautilus-search-engine-tracker.c687--- a/src/nautilus-search-engine-tracker.c
653+++ b/src/nautilus-search-engine-tracker.c688+++ b/src/nautilus-search-engine-tracker.c
654@@ -22,7 +22,7 @@689@@ -22,7 +22,7 @@
@@ -660,7 +695,7 @@ index 8218ea3..98f3c79 100644
660 #include "nautilus-search-hit.h"695 #include "nautilus-search-hit.h"
661 #include "nautilus-search-provider.h"696 #include "nautilus-search-provider.h"
662 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH697 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
663@@ -296,7 +296,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)698@@ -295,7 +295,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
664 GString *sparql;699 GString *sparql;
665 GList *mimetypes, *l;700 GList *mimetypes, *l;
666 gint mime_count;701 gint mime_count;
@@ -668,7 +703,7 @@ index 8218ea3..98f3c79 100644
668 GPtrArray *date_range;703 GPtrArray *date_range;
669 704
670 tracker = NAUTILUS_SEARCH_ENGINE_TRACKER (provider);705 tracker = NAUTILUS_SEARCH_ENGINE_TRACKER (provider);
671@@ -325,10 +324,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)706@@ -317,10 +316,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
672 return;707 return;
673 }708 }
674 709
@@ -679,7 +714,7 @@ index 8218ea3..98f3c79 100644
679 tracker->fts_enabled = nautilus_query_get_search_content (tracker->query);714 tracker->fts_enabled = nautilus_query_get_search_content (tracker->query);
680 715
681 query_text = nautilus_query_get_text (tracker->query);716 query_text = nautilus_query_get_text (tracker->query);
682@@ -476,16 +471,21 @@ static void717@@ -468,13 +463,18 @@ static void
683 nautilus_search_engine_tracker_set_query (NautilusSearchProvider *provider,718 nautilus_search_engine_tracker_set_query (NautilusSearchProvider *provider,
684 NautilusQuery *query)719 NautilusQuery *query)
685 {720 {
@@ -689,9 +724,6 @@ index 8218ea3..98f3c79 100644
689 tracker = NAUTILUS_SEARCH_ENGINE_TRACKER (provider);724 tracker = NAUTILUS_SEARCH_ENGINE_TRACKER (provider);
690+ location = nautilus_query_get_location (query);725+ location = nautilus_query_get_location (query);
691 726
692 if (!tracker->available)
693 return;
694
695- g_object_ref (query);727- g_object_ref (query);
696 g_clear_object (&tracker->query);728 g_clear_object (&tracker->query);
697- tracker->query = query;729- tracker->query = query;
@@ -704,10 +736,10 @@ index 8218ea3..98f3c79 100644
704 736
705 static gboolean737 static gboolean
706diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c738diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
707index 209bd4f..a545160 100644739index 209bd4f..3a0c9d4 100644
708--- a/src/nautilus-search-engine.c740--- a/src/nautilus-search-engine.c
709+++ b/src/nautilus-search-engine.c741+++ b/src/nautilus-search-engine.c
710@@ -20,12 +20,14 @@742@@ -20,14 +20,16 @@
711 */743 */
712 744
713 #include <config.h>745 #include <config.h>
@@ -715,17 +747,20 @@ index 209bd4f..a545160 100644
715-#include <glib/gi18n.h>747-#include <glib/gi18n.h>
716-#include "nautilus-search-provider.h"748-#include "nautilus-search-provider.h"
717 #include "nautilus-search-engine.h"749 #include "nautilus-search-engine.h"
718 #include "nautilus-search-engine-simple.h"750-#include "nautilus-search-engine-simple.h"
719+#include "nautilus-search-engine-private.h"751+#include "nautilus-search-engine-private.h"
720+752+
753+#include "nautilus-file.h"
721 #include "nautilus-search-engine-model.h"754 #include "nautilus-search-engine-model.h"
722+#include "nautilus-search-provider.h"755+#include "nautilus-search-provider.h"
723+#include "nautilus-file.h"
724+#include <glib/gi18n.h>756+#include <glib/gi18n.h>
725 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH757 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
726 #include "nautilus-debug.h"758 #include "nautilus-debug.h"
759+#include "nautilus-search-engine-simple.h"
727 #include "nautilus-search-engine-tracker.h"760 #include "nautilus-search-engine-tracker.h"
728@@ -417,12 +419,30 @@ nautilus_search_engine_get_model_provider (NautilusSearchEngine *engine)761
762 typedef struct
763@@ -417,12 +419,28 @@ nautilus_search_engine_get_model_provider (NautilusSearchEngine *engine)
729 return priv->model;764 return priv->model;
730 }765 }
731 766
@@ -751,10 +786,8 @@ index 209bd4f..a545160 100644
751+786+
752+ case NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY:787+ case NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY:
753+ {788+ {
754+ NautilusFile *file = nautilus_file_get (location);789+ g_autoptr (NautilusFile) file = nautilus_file_get (location);
755+ gboolean remote = !nautilus_file_is_remote (file);790+ return !nautilus_file_is_remote (file);
756+ nautilus_file_unref (file);
757+ return remote;
758+ }791+ }
759+ }792+ }
760 793
@@ -775,10 +808,10 @@ index 0416e83..435908a 100644
775 G_END_DECLS808 G_END_DECLS
776 809
777diff --git a/src/nautilus-shell-search-provider.c b/src/nautilus-shell-search-provider.c810diff --git a/src/nautilus-shell-search-provider.c b/src/nautilus-shell-search-provider.c
778index cdadc08..b95babf 100644811index cdadc08..ffc2b7f 100644
779--- a/src/nautilus-shell-search-provider.c812--- a/src/nautilus-shell-search-provider.c
780+++ b/src/nautilus-shell-search-provider.c813+++ b/src/nautilus-shell-search-provider.c
781@@ -426,15 +426,32 @@ search_add_volumes_and_bookmarks (PendingSearch *search)814@@ -426,15 +426,30 @@ search_add_volumes_and_bookmarks (PendingSearch *search)
782 g_object_unref (volume_monitor);815 g_object_unref (volume_monitor);
783 }816 }
784 817
@@ -793,8 +826,6 @@ index cdadc08..b95babf 100644
793+ home = g_file_new_for_path (g_get_home_dir ());826+ home = g_file_new_for_path (g_get_home_dir ());
794+827+
795+ query = nautilus_query_new ();828+ query = nautilus_query_new ();
796+ nautilus_query_set_show_hidden_files (query, FALSE);
797+ nautilus_query_set_recursive (query, NAUTILUS_QUERY_RECURSIVE_INDEXED_ONLY);
798+ nautilus_query_set_text (query, terms_joined);829+ nautilus_query_set_text (query, terms_joined);
799+ nautilus_query_set_location (query, home);830+ nautilus_query_set_location (query, home);
800+831+
@@ -813,7 +844,7 @@ index cdadc08..b95babf 100644
813 844
814 cancel_current_search (self);845 cancel_current_search (self);
815 846
816@@ -446,13 +463,7 @@ execute_search (NautilusShellSearchProvider *self,847@@ -446,13 +461,9 @@ execute_search (NautilusShellSearchProvider *self,
817 return;848 return;
818 }849 }
819 850
@@ -821,10 +852,11 @@ index cdadc08..b95babf 100644
821- home = g_file_new_for_path (g_get_home_dir ());852- home = g_file_new_for_path (g_get_home_dir ());
822-853-
823- query = nautilus_query_new ();854- query = nautilus_query_new ();
824- nautilus_query_set_show_hidden_files (query, FALSE);855+ query = shell_query_new (terms);
856+ nautilus_query_set_recursive (query, NAUTILUS_QUERY_RECURSIVE_INDEXED_ONLY);
857 nautilus_query_set_show_hidden_files (query, FALSE);
825- nautilus_query_set_text (query, terms_joined);858- nautilus_query_set_text (query, terms_joined);
826- nautilus_query_set_location (query, home);859- nautilus_query_set_location (query, home);
827+ query = shell_query_new (terms);
828 860
829 pending_search = g_slice_new0 (PendingSearch);861 pending_search = g_slice_new0 (PendingSearch);
830 pending_search->invocation = g_object_ref (invocation);862 pending_search->invocation = g_object_ref (invocation);
@@ -838,7 +870,7 @@ index cdadc08..b95babf 100644
838 }870 }
839 871
840 static gboolean872 static gboolean
841@@ -713,13 +721,9 @@ handle_launch_search (NautilusShellSearchProvider2 *skeleton,873@@ -713,13 +721,23 @@ handle_launch_search (NautilusShellSearchProvider2 *skeleton,
842 gpointer user_data)874 gpointer user_data)
843 {875 {
844 GApplication *app = g_application_get_default ();876 GApplication *app = g_application_get_default ();
@@ -847,7 +879,20 @@ index cdadc08..b95babf 100644
847+ g_autoptr (NautilusQuery) query = shell_query_new (terms);879+ g_autoptr (NautilusQuery) query = shell_query_new (terms);
848 880
849- nautilus_application_search (NAUTILUS_APPLICATION (app), uri, string);881- nautilus_application_search (NAUTILUS_APPLICATION (app), uri, string);
850-882+ if (location_settings_search_get_recursive () == NAUTILUS_QUERY_RECURSIVE_NEVER)
883+ {
884+ /*
885+ * If no recursive search is enabled, we still want to be able to
886+ * show the same results we presented in the overview when nautilus
887+ * is explicitly launched to access to more results, and thus we perform
888+ * a query showing results coming from index-based search engines.
889+ * Otherwise we just respect the user settings.
890+ * See: https://gitlab.gnome.org/GNOME/nautilus/merge_requests/249
891+ */
892+ nautilus_query_set_recursive (query,
893+ NAUTILUS_QUERY_RECURSIVE_INDEXED_ONLY);
894+ }
895
851- g_free (string);896- g_free (string);
852- g_free (uri);897- g_free (uri);
853+ nautilus_application_search (NAUTILUS_APPLICATION (app), query);898+ nautilus_application_search (NAUTILUS_APPLICATION (app), query);
diff --git a/debian/patches/series b/debian/patches/series
index 09e8099..41a35d1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -16,9 +16,11 @@ ubuntu_backspace_behaviour.patch
160001-Respect-gtk-dialogs-use-header-for-all-dialogs.patch160001-Respect-gtk-dialogs-use-header-for-all-dialogs.patch
17#Needs updating17#Needs updating
18#16_unity_new_documents.patch18#16_unity_new_documents.patch
190015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
20query-add-recursive-flags-and-use-it-in-search-engines.patch19query-add-recursive-flags-and-use-it-in-search-engines.patch
200015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
210016-search-engine-add-a-recent-search-engine-listing-Gtk.patch210016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
220017-recent-add-function-to-update-manager-on-file-rename.patch220017-recent-add-function-to-update-manager-on-file-rename.patch
230018-search-engine-add-locate-based-search-engine.patch230018-search-engine-add-locate-based-search-engine.patch
24appstream-compulsory.patch24appstream-compulsory.patch
25nautilusgtkplacesview-show-error-if-volume-is-not-mo.patch
26file-view-Always-unset-pending_selection-after-freeing-it.patch

Subscribers

People subscribed via source and target branches