Merge ~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-fix-recursive-engines into ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/bionic

Proposed by Marco Trevisan (Treviño)
Status: Superseded
Proposed branch: ~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-fix-recursive-engines
Merge into: ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/bionic
Diff against target: 1878 lines (+1357/-93)
16 files modified
NEWS (+3/-0)
debian/changelog (+24/-0)
debian/control.in (+4/-1)
debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch (+88/-46)
debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch (+20/-14)
debian/patches/0018-search-engine-add-locate-based-search-engine.patch (+25/-21)
debian/patches/Revert-Revert-files-view-Remove-new-empty-folder-name-sug.patch (+53/-0)
debian/patches/Revert-Revert-nautilus-file-Don-t-show-thumbnails-for-the.patch (+25/-0)
debian/patches/git_middle_tab.patch (+78/-0)
debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mounted.patch (+45/-0)
debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch (+977/-0)
debian/patches/series (+5/-0)
meson.build (+1/-1)
src/nautilus-file.c (+1/-1)
src/nautilus-files-view.c (+7/-8)
src/nautilus-trash-monitor.c (+1/-1)
Reviewer Review Type Date Requested Status
Ubuntu Desktop Pending
Review via email: mp+349800@code.launchpad.net

This proposal has been superseded by a proposal from 2018-07-20.

Commit message

  * New upstream release: 3.26.3.1
  * debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch,
    debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch,
    debian/patches/0018-search-engine-add-locate-based-search-engine.patch:
    - Follow nautilus settings to search only in current folder (LP: #1767027).
      This doesn't apply to gnome-shell search provider for indexed searches.
  * debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch:
    - Updated to respect upstream requested changes
  * debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mounted.patch:
    - don't crash if selecting a volume that is not mounted (LP: #1764779)

To post a comment you must log in.
Revision history for this message
Amr Ibrahim (amribrahim1987) wrote :

I just have a comment on what upstream did for 3.26.3.1. They reverted two commits, which they see as behavioural changes in a stable release, and that makes sense upstream.

Revert "files-view: Remove new empty folder name suggestion"
https://gitlab.gnome.org/GNOME/nautilus/commit/945c32dec747855047aa9b380d53588c5fcfb57a

Revert "nautilus-file: Don't show thumbnails for the first 2 zoom levels"
https://gitlab.gnome.org/GNOME/nautilus/commit/d62c0899f34665bdc4752ce8b6844328889f4638

But downstream here in Ubuntu, those behaviours were released as part of 18.04 in nautilus 3.26.3 and removing them might be considered a regression in Ubuntu itself. The changes had been introduced in 3.26.3 during the development cycle of Bionic, so technically that counts as an improvement, not as a behavioural change in stable Ubuntu.

034a651... by Marco Trevisan (Treviño)

Reverts the reverts introduced in 2.26.3.1 as they are in ubuntu already

Removing these would be a regression from our POV.

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Right Amr, I had the same feeling... So pushed a fix for both this and ubuntu/master

Unmerged commits

034a651... by Marco Trevisan (Treviño)

Reverts the reverts introduced in 2.26.3.1 as they are in ubuntu already

Removing these would be a regression from our POV.

6e493a1... by Marco Trevisan (Treviño)

recent-manager-update: Updated to respect upstream requested changes

0afc1ee... by Marco Trevisan (Treviño)

search-engine: respect settings for recursive search

Follow nautilus settings to search only in current folder.
This doesn't apply to gnome-shell search provider for indexed searches.

LP: #1767027

adc5134... by Marco Trevisan (Treviño)

nautilusgtkplacesview: show error if volume is not mounted

LP: #1764779

92807da... by Marco Trevisan (Treviño)

debian/changelog: update to reflect new upstream release version

3a32e73... by Marco Trevisan (Treviño)

Update upstream source from tag 'upstream/3.26.3.1'

Upstream version 3.26.3.1

1c3c422... by Sebastien Bacher

* debian/patches/git_middle_tab.patch: - don't close the view when middle clicking on an item in the "other locations" (lp: #1765776)

(bzr r574)

70d0163... by Marco Trevisan (Treviño)

debian/control*: update VCS informations

92bfb4c... by Jeremy Bícha

New upstream version 3.26.3.1

513a3c8... by Display Name

release: Prepare for 3.26.3.1

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/NEWS b/NEWS
index 94f1bf4..c78d1d1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
1Major changes in 3.26.3.1:
2* Revert accidental backports of behavioral and visual changes
3
1Major changes in 3.26.3:4Major changes in 3.26.3:
2* Don’t strip extension from folders in compress dialog (Rahul Verma)5* Don’t strip extension from folders in compress dialog (Rahul Verma)
3* Fix items not being focused when selected in list view (António Fernandes)6* Fix items not being focused when selected in list view (António Fernandes)
diff --git a/debian/changelog b/debian/changelog
index 30d5e5b..0ef6111 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,27 @@
1nautilus (1:3.26.3.1-0~ubuntu18.04.1) UNRELEASED; urgency=medium
2
3 [ Sebastien Bacher ]
4 * debian/patches/git_middle_tab.patch:
5 - don't close the view when middle clicking on an item in the
6 "other locations" (lp: #1765776)
7
8 [ Marco Trevisan (Treviño) ]
9 * New upstream release: 3.26.3.1
10 * debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch,
11 debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch,
12 debian/patches/0018-search-engine-add-locate-based-search-engine.patch:
13 - Follow nautilus settings to search only in current folder (LP: #1767027).
14 This doesn't apply to gnome-shell search provider for indexed searches.
15 * debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch:
16 - Updated to respect upstream requested changes
17 * debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mounted.patch:
18 - don't crash if selecting a volume that is not mounted (LP: #1764779)
19 * debian/patches/Revert-Revert-files-view-Remove-new-empty-folder-name-sug.patch,
20 debian/patches/Revert-Revert-nautilus-file-Don-t-show-thumbnails-for-the.patch:
21 - Reverts the reverts introduced in 2.26.3.1 as they are in ubuntu already
22
23 -- Sebastien Bacher <seb128@ubuntu.com> Mon, 30 Apr 2018 16:12:53 +0200
24
1nautilus (1:3.26.3-0ubuntu4) bionic; urgency=medium25nautilus (1:3.26.3-0ubuntu4) bionic; urgency=medium
226
3 * debian/patches/server_list_segfault.patch,27 * debian/patches/server_list_segfault.patch,
diff --git a/debian/control.in b/debian/control.in
index 0d5ed26..19b2ec4 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -33,7 +33,10 @@ Build-Depends: debhelper (>= 10.3),
33 libunity-dev (>= 5.0.0),33 libunity-dev (>= 5.0.0),
34 libzeitgeist-2.0-dev,34 libzeitgeist-2.0-dev,
35Homepage: https://wiki.gnome.org/action/show/Apps/Nautilus35Homepage: https://wiki.gnome.org/action/show/Apps/Nautilus
36Vcs-Bzr: http://code.launchpad.net/~ubuntu-desktop/nautilus/ubuntu36XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/nautilus
37XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/nautilus.git
38Vcs-Browser: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/nautilus
39Vcs-Git: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/nautilus -b ubuntu/bionic
37Standards-Version: 3.9.840Standards-Version: 3.9.8
3841
39Package: nautilus42Package: nautilus
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 1a4ee1c..0ec13f1 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
@@ -7,19 +7,19 @@ Using GtkRecent items as search engine source in nautilus
7---7---
8 src/meson.build | 2 +8 src/meson.build | 2 +
9 src/nautilus-file.h | 1 +9 src/nautilus-file.h | 1 +
10 src/nautilus-search-engine-recent.c | 385 ++++++++++++++++++++++++++++++++++++10 src/nautilus-search-engine-recent.c | 427 ++++++++++++++++++++++++++++++++++++
11 src/nautilus-search-engine-recent.h | 36 ++++11 src/nautilus-search-engine-recent.h | 36 +++
12 src/nautilus-search-engine.c | 11 ++12 src/nautilus-search-engine.c | 11 +
13 5 files changed, 435 insertions(+)13 5 files changed, 477 insertions(+)
14 create mode 100644 src/nautilus-search-engine-recent.c14 create mode 100644 src/nautilus-search-engine-recent.c
15 create mode 100644 src/nautilus-search-engine-recent.h15 create mode 100644 src/nautilus-search-engine-recent.h
1616
17diff --git a/src/meson.build b/src/meson.build17diff --git a/src/meson.build b/src/meson.build
18index a771d12..0ea9165 10064418index 73aafe9..213b35f 100644
19--- a/src/meson.build19--- a/src/meson.build
20+++ b/src/meson.build20+++ b/src/meson.build
21@@ -228,6 +228,8 @@ libnautilus_sources = [21@@ -229,6 +229,8 @@ libnautilus_sources = [
22 'nautilus-search-engine.h',22 'nautilus-search-engine-private.h',
23 'nautilus-search-engine-model.c',23 'nautilus-search-engine-model.c',
24 'nautilus-search-engine-model.h',24 'nautilus-search-engine-model.h',
25+ 'nautilus-search-engine-recent.c',25+ 'nautilus-search-engine-recent.c',
@@ -28,7 +28,7 @@ index a771d12..0ea9165 100644
28 'nautilus-search-engine-simple.h',28 'nautilus-search-engine-simple.h',
29 'nautilus-search-hit.c',29 'nautilus-search-hit.c',
30diff --git a/src/nautilus-file.h b/src/nautilus-file.h30diff --git a/src/nautilus-file.h b/src/nautilus-file.h
31index 3a83bd4..fd72d7a 10064431index af8c003..20ec6f3 100644
32--- a/src/nautilus-file.h32--- a/src/nautilus-file.h
33+++ b/src/nautilus-file.h33+++ b/src/nautilus-file.h
34@@ -49,6 +49,7 @@ typedef struct NautilusFile NautilusFile;34@@ -49,6 +49,7 @@ typedef struct NautilusFile NautilusFile;
@@ -41,10 +41,10 @@ index 3a83bd4..fd72d7a 100644
41 NAUTILUS_FILE_SORT_NONE,41 NAUTILUS_FILE_SORT_NONE,
42diff --git a/src/nautilus-search-engine-recent.c b/src/nautilus-search-engine-recent.c42diff --git a/src/nautilus-search-engine-recent.c b/src/nautilus-search-engine-recent.c
43new file mode 10064443new file mode 100644
44index 0000000..f052e8f44index 0000000..bbd0d82
45--- /dev/null45--- /dev/null
46+++ b/src/nautilus-search-engine-recent.c46+++ b/src/nautilus-search-engine-recent.c
47@@ -0,0 +1,385 @@47@@ -0,0 +1,427 @@
48+/*48+/*
49+ * Copyright (C) 2018 Canonical Ltd49+ * Copyright (C) 2018 Canonical Ltd
50+ *50+ *
@@ -69,6 +69,7 @@ index 0000000..f052e8f
69+#include "nautilus-search-hit.h"69+#include "nautilus-search-hit.h"
70+#include "nautilus-search-provider.h"70+#include "nautilus-search-provider.h"
71+#include "nautilus-search-engine-recent.h"71+#include "nautilus-search-engine-recent.h"
72+#include "nautilus-search-engine-private.h"
72+#include "nautilus-ui-utilities.h"73+#include "nautilus-ui-utilities.h"
73+#define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH74+#define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
74+#include "nautilus-debug.h"75+#include "nautilus-debug.h"
@@ -161,6 +162,51 @@ index 0000000..f052e8f
161+ return FALSE;162+ return FALSE;
162+}163+}
163+164+
165+static gboolean
166+is_file_valid_recursive (NautilusSearchEngineRecent *self,
167+ GFile *file,
168+ GError **error)
169+{
170+ g_autofree gchar *path = NULL;
171+ g_autoptr (GFileInfo) file_info = NULL;
172+
173+ file_info = g_file_query_info (file, FILE_ATTRIBS,
174+ G_FILE_QUERY_INFO_NONE,
175+ self->cancellable, error);
176+ if (*error != NULL)
177+ {
178+ return FALSE;
179+ }
180+
181+ if (!g_file_info_get_attribute_boolean (file_info,
182+ G_FILE_ATTRIBUTE_ACCESS_CAN_READ))
183+ {
184+ return FALSE;
185+ }
186+
187+ path = g_file_get_path (file);
188+
189+ if (!nautilus_query_get_show_hidden_files (self->query))
190+ {
191+ if (!g_file_info_get_is_hidden (file_info) &&
192+ !g_file_info_get_is_backup (file_info))
193+ {
194+ g_autoptr (GFile) parent = g_file_get_parent (file);
195+
196+ if (parent)
197+ {
198+ return is_file_valid_recursive (self, parent, error);
199+ }
200+ }
201+ else
202+ {
203+ return FALSE;
204+ }
205+ }
206+
207+ return TRUE;
208+}
209+
164+static gpointer210+static gpointer
165+recent_thread_func (gpointer user_data)211+recent_thread_func (gpointer user_data)
166+{212+{
@@ -199,44 +245,24 @@ index 0000000..f052e8f
199+245+
200+ if (gtk_recent_info_is_local (info))246+ if (gtk_recent_info_is_local (info))
201+ {247+ {
202+ g_autofree gchar *path = NULL;
203+ g_autoptr (GFileInfo) file_info = NULL;
204+ g_autoptr (GError) error = NULL;248+ g_autoptr (GError) error = NULL;
205+249+
206+ file_info = g_file_query_info (file, FILE_ATTRIBS,250+ if (!is_file_valid_recursive (self, file, &error))
207+ G_FILE_QUERY_INFO_NONE,
208+ self->cancellable, &error);
209+ if (error != NULL)
210+ {251+ {
211+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))252+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
212+ {253+ {
213+ break;254+ break;
214+ }255+ }
215+256+
216+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))257+ if (error != NULL &&
258+ !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
217+ {259+ {
218+ g_debug("Impossible to read locate file info: %s",260+ g_debug("Impossible to read recent file info: %s",
219+ error->message);261+ error->message);
220+ }262+ }
221+263+
222+ continue;264+ continue;
223+ }265+ }
224+
225+ if (!g_file_info_get_attribute_boolean (file_info,
226+ G_FILE_ATTRIBUTE_ACCESS_CAN_READ))
227+ {
228+ continue;
229+ }
230+
231+ path = g_file_get_path (file);
232+
233+ if (!nautilus_query_get_show_hidden_files (self->query) &&
234+ (g_file_info_get_is_hidden (file_info) ||
235+ g_file_info_get_is_backup (file_info) ||
236+ g_strrstr (path, G_DIR_SEPARATOR_S ".") != NULL))
237+ {
238+ continue;
239+ }
240+ }266+ }
241+267+
242+ if (g_cancellable_is_cancelled (self->cancellable))268+ if (g_cancellable_is_cancelled (self->cancellable))
@@ -333,6 +359,7 @@ index 0000000..f052e8f
333+nautilus_search_engine_recent_start (NautilusSearchProvider *provider)359+nautilus_search_engine_recent_start (NautilusSearchProvider *provider)
334+{360+{
335+ NautilusSearchEngineRecent *self = NAUTILUS_SEARCH_ENGINE_RECENT (provider);361+ NautilusSearchEngineRecent *self = NAUTILUS_SEARCH_ENGINE_RECENT (provider);
362+ g_autoptr (GFile) location = NULL;
336+ GThread *thread;363+ GThread *thread;
337+364+
338+ g_return_if_fail (self->query);365+ g_return_if_fail (self->query);
@@ -340,6 +367,21 @@ index 0000000..f052e8f
340+367+
341+ g_object_ref (self);368+ g_object_ref (self);
342+ g_object_ref (self->query);369+ g_object_ref (self->query);
370+
371+ location = nautilus_query_get_location (self->query);
372+
373+ if (!is_recursive_search (NAUTILUS_SEARCH_ENGINE_TYPE_INDEXED,
374+ nautilus_query_get_recursive (self->query),
375+ location))
376+ {
377+ SearchHitsData *search_hits;
378+ search_hits = g_new0 (SearchHitsData, 1);
379+ search_hits->recent = self;
380+
381+ g_idle_add (search_thread_add_hits_idle, search_hits);
382+ return;
383+ }
384+
343+ self->cancellable = g_cancellable_new ();385+ self->cancellable = g_cancellable_new ();
344+386+
345+ thread = g_thread_new ("nautilus-search-recent", recent_thread_func, self);387+ thread = g_thread_new ("nautilus-search-recent", recent_thread_func, self);
@@ -473,18 +515,18 @@ index 0000000..bcd73b9
473+515+
474+#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */516+#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */
475diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c517diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
476index 209bd4f..aef91b7 100644518index a545160..68b6a4d 100644
477--- a/src/nautilus-search-engine.c519--- a/src/nautilus-search-engine.c
478+++ b/src/nautilus-search-engine.c520+++ b/src/nautilus-search-engine.c
479@@ -24,6 +24,7 @@521@@ -21,6 +21,7 @@
480 #include <glib/gi18n.h>522
481 #include "nautilus-search-provider.h"523 #include <config.h>
482 #include "nautilus-search-engine.h"524 #include "nautilus-search-engine.h"
483+#include "nautilus-search-engine-recent.h"525+#include "nautilus-search-engine-recent.h"
484 #include "nautilus-search-engine-simple.h"526 #include "nautilus-search-engine-simple.h"
485 #include "nautilus-search-engine-model.h"527 #include "nautilus-search-engine-private.h"
486 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH528
487@@ -33,6 +34,7 @@529@@ -35,6 +36,7 @@
488 typedef struct530 typedef struct
489 {531 {
490 NautilusSearchEngineTracker *tracker;532 NautilusSearchEngineTracker *tracker;
@@ -492,7 +534,7 @@ index 209bd4f..aef91b7 100644
492 NautilusSearchEngineSimple *simple;534 NautilusSearchEngineSimple *simple;
493 NautilusSearchEngineModel *model;535 NautilusSearchEngineModel *model;
494 536
495@@ -74,6 +76,7 @@ nautilus_search_engine_set_query (NautilusSearchProvider *provider,537@@ -76,6 +78,7 @@ nautilus_search_engine_set_query (NautilusSearchProvider *provider,
496 priv = nautilus_search_engine_get_instance_private (engine);538 priv = nautilus_search_engine_get_instance_private (engine);
497 539
498 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->tracker), query);540 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->tracker), query);
@@ -500,7 +542,7 @@ index 209bd4f..aef91b7 100644
500 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->model), query);542 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->model), query);
501 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->simple), query);543 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->simple), query);
502 }544 }
503@@ -98,6 +101,9 @@ search_engine_start_real (NautilusSearchEngine *engine)545@@ -100,6 +103,9 @@ search_engine_start_real (NautilusSearchEngine *engine)
504 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->tracker));546 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->tracker));
505 priv->providers_running++;547 priv->providers_running++;
506 548
@@ -510,7 +552,7 @@ index 209bd4f..aef91b7 100644
510 if (nautilus_search_engine_model_get_model (priv->model))552 if (nautilus_search_engine_model_get_model (priv->model))
511 {553 {
512 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->model));554 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->model));
513@@ -159,6 +165,7 @@ nautilus_search_engine_stop (NautilusSearchProvider *provider)555@@ -161,6 +167,7 @@ nautilus_search_engine_stop (NautilusSearchProvider *provider)
514 DEBUG ("Search engine stop");556 DEBUG ("Search engine stop");
515 557
516 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->tracker));558 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->tracker));
@@ -518,7 +560,7 @@ index 209bd4f..aef91b7 100644
518 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->model));560 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->model));
519 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->simple));561 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->simple));
520 562
521@@ -334,6 +341,7 @@ nautilus_search_engine_finalize (GObject *object)563@@ -336,6 +343,7 @@ nautilus_search_engine_finalize (GObject *object)
522 g_hash_table_destroy (priv->uris);564 g_hash_table_destroy (priv->uris);
523 565
524 g_clear_object (&priv->tracker);566 g_clear_object (&priv->tracker);
@@ -526,7 +568,7 @@ index 209bd4f..aef91b7 100644
526 g_clear_object (&priv->model);568 g_clear_object (&priv->model);
527 g_clear_object (&priv->simple);569 g_clear_object (&priv->simple);
528 570
529@@ -395,6 +403,9 @@ nautilus_search_engine_init (NautilusSearchEngine *engine)571@@ -397,6 +405,9 @@ nautilus_search_engine_init (NautilusSearchEngine *engine)
530 572
531 priv->simple = nautilus_search_engine_simple_new ();573 priv->simple = nautilus_search_engine_simple_new ();
532 connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (priv->simple));574 connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (priv->simple));
diff --git a/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch b/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
index 99abe37..d0125f5 100644
--- a/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
+++ b/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
@@ -1,5 +1,5 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Wed, 11 Apr 2018 18:51:34 -04002Date: Thu, 12 Apr 2018 00:51:34 +0200
3Subject: recent: add function to update manager on file rename or move3Subject: recent: add function to update manager on file rename or move
44
5When files have been moved or renamed nautilus should inform5When files have been moved or renamed nautilus should inform
@@ -7,10 +7,10 @@ recent manager about this change for the files that
7are listed there.7are listed there.
8---8---
9 src/nautilus-directory.c | 8 +++9 src/nautilus-directory.c | 8 +++
10 src/nautilus-file.c | 25 +++++-----10 src/nautilus-file.c | 25 +++++----
11 src/nautilus-recent.c | 126 +++++++++++++++++++++++++++++++++++++++++++++++11 src/nautilus-recent.c | 132 +++++++++++++++++++++++++++++++++++++++++++++++
12 src/nautilus-recent.h | 8 ++-12 src/nautilus-recent.h | 8 ++-
13 4 files changed, 152 insertions(+), 15 deletions(-)13 4 files changed, 158 insertions(+), 15 deletions(-)
1414
15diff --git a/src/nautilus-directory.c b/src/nautilus-directory.c15diff --git a/src/nautilus-directory.c b/src/nautilus-directory.c
16index ad3bb03..f1a3bf8 10064416index ad3bb03..f1a3bf8 100644
@@ -49,7 +49,7 @@ index ad3bb03..f1a3bf8 100644
49 49
50 /* Now send out the changed and added signals for existing file objects. */50 /* Now send out the changed and added signals for existing file objects. */
51diff --git a/src/nautilus-file.c b/src/nautilus-file.c51diff --git a/src/nautilus-file.c b/src/nautilus-file.c
52index 2135801..15e5d05 10064452index e862c13..21846d0 100644
53--- a/src/nautilus-file.c53--- a/src/nautilus-file.c
54+++ b/src/nautilus-file.c54+++ b/src/nautilus-file.c
55@@ -34,6 +34,7 @@55@@ -34,6 +34,7 @@
@@ -128,17 +128,18 @@ index 2135801..15e5d05 100644
128 128
129 static void129 static void
130diff --git a/src/nautilus-recent.c b/src/nautilus-recent.c130diff --git a/src/nautilus-recent.c b/src/nautilus-recent.c
131index ab50fef..c69a3a7 100644131index ab50fef..6676465 100644
132--- a/src/nautilus-recent.c132--- a/src/nautilus-recent.c
133+++ b/src/nautilus-recent.c133+++ b/src/nautilus-recent.c
134@@ -1,5 +1,6 @@134@@ -1,5 +1,7 @@
135 /*135 /*
136 * Copyright (C) 2002 James Willcox136 * Copyright (C) 2002 James Willcox
137+ * Copyright (C) 2018 Canonical Ltd137+ * Copyright (C) 2018 Canonical Ltd
138+ * Copyright (C) 2018 Marco Trevisan
138 *139 *
139 * This program is free software; you can redistribute it and/or modify140 * This program is free software; you can redistribute it and/or modify
140 * it under the terms of the GNU General Public License as published by141 * it under the terms of the GNU General Public License as published by
141@@ -17,6 +18,7 @@142@@ -17,6 +19,7 @@
142 143
143 #include "config.h"144 #include "config.h"
144 #include "nautilus-recent.h"145 #include "nautilus-recent.h"
@@ -146,16 +147,16 @@ index ab50fef..c69a3a7 100644
146 147
147 #include <eel/eel-vfs-extensions.h>148 #include <eel/eel-vfs-extensions.h>
148 149
149@@ -85,3 +87,127 @@ nautilus_recent_add_file (NautilusFile *file,150@@ -85,3 +88,132 @@ nautilus_recent_add_file (NautilusFile *file,
150 151
151 g_free (uri);152 g_free (uri);
152 }153 }
153+154+
154+void155+void
155+nautilus_recent_update_file_moved (const gchar *old_uri,156+nautilus_recent_update_file_moved (const gchar *old_uri,
156+ const gchar *new_uri,157+ const gchar *new_uri,
157+ const gchar *old_display_name,158+ const gchar *old_display_name,
158+ const gchar *new_display_name)159+ const gchar *new_display_name)
159+{160+{
160+ GtkRecentManager *recent_manager = nautilus_recent_get_manager ();161+ GtkRecentManager *recent_manager = nautilus_recent_get_manager ();
161+ g_autoptr (NautilusFile) file = NULL;162+ g_autoptr (NautilusFile) file = NULL;
@@ -191,9 +192,11 @@ index ab50fef..c69a3a7 100644
191+192+
192+ if (nautilus_file_is_directory (file))193+ if (nautilus_file_is_directory (file))
193+ {194+ {
195+ g_autoptr (GFile) location = NULL;
194+ GList *recent_items;196+ GList *recent_items;
195+ GList *l;197+ GList *l;
196+198+
199+ location = g_file_new_for_uri (old_uri);
197+ recent_items = gtk_recent_manager_get_items (recent_manager);200+ recent_items = gtk_recent_manager_get_items (recent_manager);
198+201+
199+ for (l = recent_items; l; l = l->next)202+ for (l = recent_items; l; l = l->next)
@@ -203,9 +206,12 @@ index ab50fef..c69a3a7 100644
203+206+
204+ if (g_str_has_prefix (item_uri, old_uri))207+ if (g_str_has_prefix (item_uri, old_uri))
205+ {208+ {
206+ const gchar *relative_path = item_uri + strlen (old_uri);209+ g_autoptr (GFile) item_file = NULL;
210+ g_autofree gchar *relative_path = NULL;
207+ g_autofree gchar *new_item_uri = NULL;211+ g_autofree gchar *new_item_uri = NULL;
208+212+
213+ item_file = g_file_new_for_uri (item_uri);
214+ relative_path = g_file_get_relative_path (location, item_file);
209+ new_item_uri = g_build_filename (new_uri, relative_path, NULL);215+ new_item_uri = g_build_filename (new_uri, relative_path, NULL);
210+216+
211+ gtk_recent_manager_move_item (recent_manager,217+ gtk_recent_manager_move_item (recent_manager,
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 5140963..c0d37b9 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
@@ -7,19 +7,19 @@ command line and parsing output to provide more and
7quicker results to the shell and nautilus7quicker results to the shell and nautilus
8---8---
9 src/meson.build | 2 +9 src/meson.build | 2 +
10 src/nautilus-search-engine-locate.c | 597 ++++++++++++++++++++++++++++++++++++10 src/nautilus-search-engine-locate.c | 601 ++++++++++++++++++++++++++++++++++++
11 src/nautilus-search-engine-locate.h | 37 +++11 src/nautilus-search-engine-locate.h | 37 +++
12 src/nautilus-search-engine.c | 11 +12 src/nautilus-search-engine.c | 11 +
13 4 files changed, 647 insertions(+)13 4 files changed, 651 insertions(+)
14 create mode 100644 src/nautilus-search-engine-locate.c14 create mode 100644 src/nautilus-search-engine-locate.c
15 create mode 100644 src/nautilus-search-engine-locate.h15 create mode 100644 src/nautilus-search-engine-locate.h
1616
17diff --git a/src/meson.build b/src/meson.build17diff --git a/src/meson.build b/src/meson.build
18index 0ea9165..06e6633 10064418index 213b35f..a0bf109 100644
19--- a/src/meson.build19--- a/src/meson.build
20+++ b/src/meson.build20+++ b/src/meson.build
21@@ -228,6 +228,8 @@ libnautilus_sources = [21@@ -229,6 +229,8 @@ libnautilus_sources = [
22 'nautilus-search-engine.h',22 'nautilus-search-engine-private.h',
23 'nautilus-search-engine-model.c',23 'nautilus-search-engine-model.c',
24 'nautilus-search-engine-model.h',24 'nautilus-search-engine-model.h',
25+ 'nautilus-search-engine-locate.c',25+ 'nautilus-search-engine-locate.c',
@@ -29,10 +29,10 @@ index 0ea9165..06e6633 100644
29 'nautilus-search-engine-simple.c',29 'nautilus-search-engine-simple.c',
30diff --git a/src/nautilus-search-engine-locate.c b/src/nautilus-search-engine-locate.c30diff --git a/src/nautilus-search-engine-locate.c b/src/nautilus-search-engine-locate.c
31new file mode 10064431new file mode 100644
32index 0000000..16f9f2132index 0000000..d152a23
33--- /dev/null33--- /dev/null
34+++ b/src/nautilus-search-engine-locate.c34+++ b/src/nautilus-search-engine-locate.c
35@@ -0,0 +1,597 @@35@@ -0,0 +1,601 @@
36+/*36+/*
37+ * Copyright (C) 2018 Canonical Ltd37+ * Copyright (C) 2018 Canonical Ltd
38+ *38+ *
@@ -57,6 +57,7 @@ index 0000000..16f9f21
57+#include "nautilus-search-hit.h"57+#include "nautilus-search-hit.h"
58+#include "nautilus-search-provider.h"58+#include "nautilus-search-provider.h"
59+#include "nautilus-search-engine-locate.h"59+#include "nautilus-search-engine-locate.h"
60+#include "nautilus-search-engine-private.h"
60+#include "nautilus-ui-utilities.h"61+#include "nautilus-ui-utilities.h"
61+#define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH62+#define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
62+#include "nautilus-debug.h"63+#include "nautilus-debug.h"
@@ -452,7 +453,12 @@ index 0000000..16f9f21
452+ sdata = g_new0 (LocateSearchData, 1);453+ sdata = g_new0 (LocateSearchData, 1);
453+ sdata->locate = g_object_ref (self);454+ sdata->locate = g_object_ref (self);
454+455+
455+ if (!(self->locate_features & LOCATE_INSTALLED))456+ query_location = nautilus_query_get_location (self->query);
457+
458+ if (!(self->locate_features & LOCATE_INSTALLED) ||
459+ !is_recursive_search (NAUTILUS_SEARCH_ENGINE_TYPE_INDEXED,
460+ nautilus_query_get_recursive (self->query),
461+ query_location))
456+ {462+ {
457+ g_idle_add ((GSourceFunc) submit_results, sdata);463+ g_idle_add ((GSourceFunc) submit_results, sdata);
458+ return;464+ return;
@@ -493,8 +499,6 @@ index 0000000..16f9f21
493+ return;499+ return;
494+ }500+ }
495+501+
496+ query_location = nautilus_query_get_location (self->query);
497+
498+ sdata->query = g_object_ref (self->query);502+ sdata->query = g_object_ref (self->query);
499+ sdata->date_range = nautilus_query_get_date_range (self->query);503+ sdata->date_range = nautilus_query_get_date_range (self->query);
500+ sdata->mime_types = nautilus_query_get_mime_types (self->query);504+ sdata->mime_types = nautilus_query_get_mime_types (self->query);
@@ -674,18 +678,18 @@ index 0000000..ac5e3fc
674+678+
675+#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */679+#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */
676diff --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
677index aef91b7..bf0e85d 100644681index 68b6a4d..84a88fa 100644
678--- a/src/nautilus-search-engine.c682--- a/src/nautilus-search-engine.c
679+++ b/src/nautilus-search-engine.c683+++ b/src/nautilus-search-engine.c
680@@ -25,6 +25,7 @@684@@ -22,6 +22,7 @@
681 #include "nautilus-search-provider.h"685 #include <config.h>
682 #include "nautilus-search-engine.h"686 #include "nautilus-search-engine.h"
683 #include "nautilus-search-engine-recent.h"687 #include "nautilus-search-engine-recent.h"
684+#include "nautilus-search-engine-locate.h"688+#include "nautilus-search-engine-locate.h"
685 #include "nautilus-search-engine-simple.h"689 #include "nautilus-search-engine-simple.h"
686 #include "nautilus-search-engine-model.h"690 #include "nautilus-search-engine-private.h"
687 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH691
688@@ -35,6 +36,7 @@ typedef struct692@@ -37,6 +38,7 @@ typedef struct
689 {693 {
690 NautilusSearchEngineTracker *tracker;694 NautilusSearchEngineTracker *tracker;
691 NautilusSearchEngineRecent *recent;695 NautilusSearchEngineRecent *recent;
@@ -693,7 +697,7 @@ index aef91b7..bf0e85d 100644
693 NautilusSearchEngineSimple *simple;697 NautilusSearchEngineSimple *simple;
694 NautilusSearchEngineModel *model;698 NautilusSearchEngineModel *model;
695 699
696@@ -77,6 +79,7 @@ nautilus_search_engine_set_query (NautilusSearchProvider *provider,700@@ -79,6 +81,7 @@ nautilus_search_engine_set_query (NautilusSearchProvider *provider,
697 701
698 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->tracker), query);702 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->tracker), query);
699 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->recent), query);703 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->recent), query);
@@ -701,7 +705,7 @@ index aef91b7..bf0e85d 100644
701 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->model), query);705 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->model), query);
702 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->simple), query);706 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->simple), query);
703 }707 }
704@@ -104,6 +107,9 @@ search_engine_start_real (NautilusSearchEngine *engine)708@@ -106,6 +109,9 @@ search_engine_start_real (NautilusSearchEngine *engine)
705 priv->providers_running++;709 priv->providers_running++;
706 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->recent));710 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->recent));
707 711
@@ -711,7 +715,7 @@ index aef91b7..bf0e85d 100644
711 if (nautilus_search_engine_model_get_model (priv->model))715 if (nautilus_search_engine_model_get_model (priv->model))
712 {716 {
713 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->model));717 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->model));
714@@ -166,6 +172,7 @@ nautilus_search_engine_stop (NautilusSearchProvider *provider)718@@ -168,6 +174,7 @@ nautilus_search_engine_stop (NautilusSearchProvider *provider)
715 719
716 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->tracker));720 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->tracker));
717 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->recent));721 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->recent));
@@ -719,7 +723,7 @@ index aef91b7..bf0e85d 100644
719 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->model));723 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->model));
720 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->simple));724 nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->simple));
721 725
722@@ -342,6 +349,7 @@ nautilus_search_engine_finalize (GObject *object)726@@ -344,6 +351,7 @@ nautilus_search_engine_finalize (GObject *object)
723 727
724 g_clear_object (&priv->tracker);728 g_clear_object (&priv->tracker);
725 g_clear_object (&priv->recent);729 g_clear_object (&priv->recent);
@@ -727,7 +731,7 @@ index aef91b7..bf0e85d 100644
727 g_clear_object (&priv->model);731 g_clear_object (&priv->model);
728 g_clear_object (&priv->simple);732 g_clear_object (&priv->simple);
729 733
730@@ -406,6 +414,9 @@ nautilus_search_engine_init (NautilusSearchEngine *engine)734@@ -408,6 +416,9 @@ nautilus_search_engine_init (NautilusSearchEngine *engine)
731 735
732 priv->recent = nautilus_search_engine_recent_new ();736 priv->recent = nautilus_search_engine_recent_new ();
733 connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (priv->recent));737 connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (priv->recent));
diff --git a/debian/patches/Revert-Revert-files-view-Remove-new-empty-folder-name-sug.patch b/debian/patches/Revert-Revert-files-view-Remove-new-empty-folder-name-sug.patch
734new file mode 100644738new file mode 100644
index 0000000..46660e5
--- /dev/null
+++ b/debian/patches/Revert-Revert-files-view-Remove-new-empty-folder-name-sug.patch
@@ -0,0 +1,53 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Wed, 18 Jul 2018 18:46:28 +0200
3Subject: Revert "Revert "files-view: Remove new empty folder name
4 suggestion""
5
6This reverts commit 945c32dec747855047aa9b380d53588c5fcfb57a.
7
8This feature was already provided in Ubuntu, so would be a regression if we drop it
9---
10 src/nautilus-files-view.c | 15 ++++++++-------
11 1 file changed, 8 insertions(+), 7 deletions(-)
12
13diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
14index 46a11bd..f916b05 100644
15--- a/src/nautilus-files-view.c
16+++ b/src/nautilus-files-view.c
17@@ -2077,9 +2077,8 @@ static void
18 nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
19 gboolean with_selection)
20 {
21- NautilusDirectory *containing_directory;
22+ g_autoptr (NautilusDirectory) containing_directory = NULL;
23 NautilusFilesViewPrivate *priv;
24- GList *selection;
25 g_autofree char *uri = NULL;
26 g_autofree char *common_prefix = NULL;
27
28@@ -2093,8 +2092,13 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
29 uri = nautilus_files_view_get_backing_uri (view);
30 containing_directory = nautilus_directory_get_by_uri (uri);
31
32- selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
33- common_prefix = nautilus_get_common_filename_prefix (selection, MIN_COMMON_FILENAME_PREFIX_LENGTH);
34+ if (with_selection)
35+ {
36+ GList *selection;
37+ selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
38+ common_prefix = nautilus_get_common_filename_prefix (selection, MIN_COMMON_FILENAME_PREFIX_LENGTH);
39+ nautilus_file_list_free (selection);
40+ }
41
42 priv->new_folder_controller =
43 nautilus_new_folder_dialog_controller_new (nautilus_files_view_get_containing_window (view),
44@@ -2110,9 +2114,6 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
45 "cancelled",
46 (GCallback) new_folder_dialog_controller_on_cancelled,
47 view);
48-
49- nautilus_file_list_free (selection);
50- nautilus_directory_unref (containing_directory);
51 }
52
53 typedef struct
diff --git a/debian/patches/Revert-Revert-nautilus-file-Don-t-show-thumbnails-for-the.patch b/debian/patches/Revert-Revert-nautilus-file-Don-t-show-thumbnails-for-the.patch
0new file mode 10064454new file mode 100644
index 0000000..90cbfe1
--- /dev/null
+++ b/debian/patches/Revert-Revert-nautilus-file-Don-t-show-thumbnails-for-the.patch
@@ -0,0 +1,25 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Wed, 18 Jul 2018 18:46:16 +0200
3Subject: Revert "Revert "nautilus-file: Don't show thumbnails for the first 2
4 zoom levels""
5
6This reverts commit d62c0899f34665bdc4752ce8b6844328889f4638.
7
8This feature was already provided in Ubuntu, so would be a regression if we drop it
9---
10 src/nautilus-file.c | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13diff --git a/src/nautilus-file.c b/src/nautilus-file.c
14index 21846d0..ede9c46 100644
15--- a/src/nautilus-file.c
16+++ b/src/nautilus-file.c
17@@ -5554,7 +5554,7 @@ nautilus_thumbnail_is_limited_by_zoom (int size,
18
19 zoom_level = size * scale;
20
21- if (zoom_level <= NAUTILUS_LIST_ICON_SIZE_SMALL)
22+ if (zoom_level <= NAUTILUS_LIST_ICON_SIZE_STANDARD)
23 {
24 return TRUE;
25 }
diff --git a/debian/patches/git_middle_tab.patch b/debian/patches/git_middle_tab.patch
0new file mode 10064426new file mode 100644
index 0000000..28d7bce
--- /dev/null
+++ b/debian/patches/git_middle_tab.patch
@@ -0,0 +1,78 @@
1Subject: [PATCH] notebook: Fix tab lookup by coordinates
2
3The current code only checks one coordinate, depending on the tab
4orientation.
5
6Fixes https://gitlab.gnome.org/GNOME/nautilus/issues/342
7
8
9(cherry picked from commit 7ca2197ae3f0df527e27cf58188b1f83216e3cdb)
10---
11 src/nautilus-notebook.c | 22 ++++++++--------------
12 1 file changed, 8 insertions(+), 14 deletions(-)
13
14diff --git a/src/nautilus-notebook.c b/src/nautilus-notebook.c
15index f2b3fbd..6e1db52 100644
16--- a/src/nautilus-notebook.c
17+++ b/src/nautilus-notebook.c
18@@ -88,14 +88,11 @@ find_tab_num_at_pos (NautilusNotebook *notebook,
19 gint abs_x,
20 gint abs_y)
21 {
22- GtkPositionType tab_pos;
23 int page_num = 0;
24 GtkNotebook *nb = GTK_NOTEBOOK (notebook);
25 GtkWidget *page;
26 GtkAllocation allocation;
27
28- tab_pos = gtk_notebook_get_tab_pos (GTK_NOTEBOOK (notebook));
29-
30 while ((page = gtk_notebook_get_nth_page (nb, page_num)))
31 {
32 GtkWidget *tab;
33@@ -118,15 +115,7 @@ find_tab_num_at_pos (NautilusNotebook *notebook,
34 max_x = x_root + allocation.x + allocation.width;
35 max_y = y_root + allocation.y + allocation.height;
36
37- if (((tab_pos == GTK_POS_TOP)
38- || (tab_pos == GTK_POS_BOTTOM))
39- && (abs_x <= max_x))
40- {
41- return page_num;
42- }
43- else if (((tab_pos == GTK_POS_LEFT)
44- || (tab_pos == GTK_POS_RIGHT))
45- && (abs_y <= max_y))
46+ if (abs_x <= max_x && abs_y <= max_y)
47 {
48 return page_num;
49 }
50@@ -154,7 +143,7 @@ button_press_cb (NautilusNotebook *notebook,
51 /* consume event, so that we don't pop up the context menu when
52 * the mouse if not over a tab label
53 */
54- return TRUE;
55+ return GDK_EVENT_STOP;
56 }
57
58 /* switch to the page the mouse is over, but don't consume the event */
59@@ -165,11 +154,16 @@ button_press_cb (NautilusNotebook *notebook,
60 {
61 GtkWidget *slot;
62
63+ if (tab_clicked == -1)
64+ {
65+ return GDK_EVENT_PROPAGATE;
66+ }
67+
68 slot = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), tab_clicked);
69 g_signal_emit (notebook, signals[TAB_CLOSE_REQUEST], 0, slot);
70 }
71
72- return FALSE;
73+ return GDK_EVENT_PROPAGATE;
74 }
75
76 static void
77--
78
diff --git a/debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mounted.patch b/debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mounted.patch
0new file mode 10064479new file mode 100644
index 0000000..37081f7
--- /dev/null
+++ b/debian/patches/nautilusgtkplacesview-show-error-if-volume-is-not-mounted.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 041849f..e13c313 100644
15--- a/src/gtk/nautilusgtkplacesview.c
16+++ b/src/gtk/nautilusgtkplacesview.c
17@@ -1330,13 +1330,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
0new file mode 10064446new file mode 100644
index 0000000..c1ee4a7
--- /dev/null
+++ b/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
@@ -0,0 +1,977 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Tue, 17 Jul 2018 02:35:20 +0200
3Subject: query: add recursive flags and use it in search-engines
4
5Forwarded: yes, https://gitlab.gnome.org/GNOME/nautilus/merge_requests/249
6Bug-Ubuntu: https://bugs.launchpad.net/bugs/1767027
7---
8 src/meson.build | 1 +
9 src/nautilus-application.c | 11 ++----
10 src/nautilus-application.h | 3 +-
11 src/nautilus-directory-async.c | 5 ++-
12 src/nautilus-file-private.h | 3 +-
13 src/nautilus-file.c | 28 ++++++++++++++
14 src/nautilus-file.h | 2 +
15 src/nautilus-query-editor.c | 61 +++++++++++++++++-------------
16 src/nautilus-query.c | 28 +++++++-------
17 src/nautilus-query.h | 14 +++++--
18 src/nautilus-search-directory.c | 6 ---
19 src/nautilus-search-engine-private.h | 34 +++++++++++++++++
20 src/nautilus-search-engine-simple.c | 72 ++++++++----------------------------
21 src/nautilus-search-engine-tracker.c | 16 ++++----
22 src/nautilus-search-engine.c | 36 ++++++++++++++----
23 src/nautilus-search-engine.h | 2 -
24 src/nautilus-shell-search-provider.c | 40 +++++++++++---------
25 src/nautilus-window-slot.c | 19 ++++------
26 src/nautilus-window-slot.h | 2 +-
27 src/nautilus-window.c | 4 +-
28 src/nautilus-window.h | 2 +-
29 21 files changed, 222 insertions(+), 167 deletions(-)
30 create mode 100644 src/nautilus-search-engine-private.h
31
32diff --git a/src/meson.build b/src/meson.build
33index a771d12..73aafe9 100644
34--- a/src/meson.build
35+++ b/src/meson.build
36@@ -226,6 +226,7 @@ libnautilus_sources = [
37 'nautilus-search-provider.h',
38 'nautilus-search-engine.c',
39 'nautilus-search-engine.h',
40+ 'nautilus-search-engine-private.h',
41 'nautilus-search-engine-model.c',
42 'nautilus-search-engine-model.h',
43 'nautilus-search-engine-simple.c',
44diff --git a/src/nautilus-application.c b/src/nautilus-application.c
45index 6293a89..13753a5 100644
46--- a/src/nautilus-application.c
47+++ b/src/nautilus-application.c
48@@ -1621,15 +1621,12 @@ nautilus_application_new (void)
49
50 void
51 nautilus_application_search (NautilusApplication *self,
52- const gchar *uri,
53- const gchar *text)
54+ NautilusQuery *query)
55 {
56+ g_autoptr (GFile) location = NULL;
57 NautilusWindow *window;
58- GFile *location;
59
60- location = g_file_new_for_uri (uri);
61+ location = nautilus_query_get_location (query);
62 window = open_window (self, location);
63- nautilus_window_search (window, text);
64-
65- g_object_unref (location);
66+ nautilus_window_search (window, query);
67 }
68diff --git a/src/nautilus-application.h b/src/nautilus-application.h
69index 9cb32c8..47adcc4 100644
70--- a/src/nautilus-application.h
71+++ b/src/nautilus-application.h
72@@ -86,8 +86,7 @@ GtkWidget * nautilus_application_connect_server (NautilusApplication *applicatio
73 NautilusWindow *window);
74
75 void nautilus_application_search (NautilusApplication *application,
76- const gchar *uri,
77- const gchar *text);
78+ NautilusQuery *query);
79 void nautilus_application_startup_common (NautilusApplication *application);
80
81 void nautilus_application_update_dbus_opened_locations (NautilusApplication *app);
82diff --git a/src/nautilus-directory-async.c b/src/nautilus-directory-async.c
83index 05a87e3..b519e20 100644
84--- a/src/nautilus-directory-async.c
85+++ b/src/nautilus-directory-async.c
86@@ -4383,6 +4383,8 @@ got_filesystem_info (FilesystemInfoState *state,
87 file->details->filesystem_readonly =
88 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);
90+ file->details->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)
93 {
94 eel_ref_str_unref (file->details->filesystem_type);
95@@ -4465,7 +4467,8 @@ filesystem_info_start (NautilusDirectory *directory,
96 g_file_query_filesystem_info_async (location,
97 G_FILE_ATTRIBUTE_FILESYSTEM_READONLY ","
98 G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW ","
99- G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
100+ G_FILE_ATTRIBUTE_FILESYSTEM_TYPE ","
101+ G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE,
102 G_PRIORITY_DEFAULT,
103 state->cancellable,
104 query_filesystem_info_callback,
105diff --git a/src/nautilus-file-private.h b/src/nautilus-file-private.h
106index adcfacf..1566589 100644
107--- a/src/nautilus-file-private.h
108+++ b/src/nautilus-file-private.h
109@@ -202,7 +202,8 @@ struct NautilusFileDetails
110 eel_boolean_bit filesystem_readonly : 1;
111 eel_boolean_bit filesystem_use_preview : 2; /* GFilesystemPreviewType */
112 eel_boolean_bit filesystem_info_is_up_to_date : 1;
113- eel_ref_str filesystem_type;
114+ eel_boolean_bit filesystem_remote : 1;
115+ eel_ref_str filesystem_type;
116
117 time_t trash_time; /* 0 is unknown */
118 time_t recency; /* 0 is unknown */
119diff --git a/src/nautilus-file.c b/src/nautilus-file.c
120index 2135801..6a28229 100644
121--- a/src/nautilus-file.c
122+++ b/src/nautilus-file.c
123@@ -4960,6 +4960,29 @@ nautilus_file_get_filesystem_type (NautilusFile *file)
124 return filesystem_type;
125 }
126
127+gboolean
128+nautilus_file_get_filesystem_remote (NautilusFile *file)
129+{
130+ NautilusFile *parent;
131+
132+ g_assert (NAUTILUS_IS_FILE (file));
133+
134+ if (nautilus_file_is_directory (file))
135+ {
136+ return file->details->filesystem_remote;
137+ }
138+ else
139+ {
140+ parent = nautilus_file_get_parent (file);
141+ if (parent != NULL)
142+ {
143+ return parent->details->filesystem_remote;
144+ }
145+ }
146+
147+ return FALSE;
148+}
149+
150 gboolean
151 nautilus_file_should_show_thumbnail (NautilusFile *file)
152 {
153@@ -8361,6 +8384,11 @@ nautilus_file_is_remote (NautilusFile *file)
154
155 g_assert (NAUTILUS_IS_FILE (file));
156
157+ if (nautilus_file_get_filesystem_remote (file))
158+ {
159+ return TRUE;
160+ }
161+
162 filesystem_type = nautilus_file_get_filesystem_type (file);
163
164 return filesystem_type != NULL && g_strv_contains (remote_types, filesystem_type);
165diff --git a/src/nautilus-file.h b/src/nautilus-file.h
166index 3a83bd4..af8c003 100644
167--- a/src/nautilus-file.h
168+++ b/src/nautilus-file.h
169@@ -251,6 +251,8 @@ char * nautilus_file_get_filesystem_id (Nautilu
170
171 char * nautilus_file_get_filesystem_type (NautilusFile *file);
172
173+gboolean nautilus_file_get_filesystem_remote (NautilusFile *file);
174+
175 NautilusFile * nautilus_file_get_trash_original_file (NautilusFile *file);
176
177 /* Permissions. */
178diff --git a/src/nautilus-query-editor.c b/src/nautilus-query-editor.c
179index 94b9c4d..f5260c9 100644
180--- a/src/nautilus-query-editor.c
181+++ b/src/nautilus-query-editor.c
182@@ -80,33 +80,47 @@ static void nautilus_query_editor_changed (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;
249 }
250 else if (nautilus_file_is_remote (file) &&
251- !settings_search_is_recursive (editor))
252+ settings_search_get_recursive_for_location (editor) == NAUTILUS_QUERY_RECURSIVE_NEVER)
253 {
254 label = _("Remote location — only searching the current folder");
255 fts_sensitive = FALSE;
256 }
257- else if (!settings_search_is_recursive (editor))
258+ else if (settings_search_get_recursive_for_location (editor) == NAUTILUS_QUERY_RECURSIVE_NEVER)
259 {
260 label = _("Only searching the current folder");
261 }
262@@ -171,7 +185,7 @@ recursive_search_preferences_changed (GSettings *settings,
263 NautilusQueryEditor *editor)
264 {
265 NautilusQueryEditorPrivate *priv;
266- gboolean recursive;
267+ NautilusQueryRecursive recursive;
268
269 priv = nautilus_query_editor_get_instance_private (editor);
270
271@@ -180,7 +194,7 @@ recursive_search_preferences_changed (GSettings *settings,
272 return;
273 }
274
275- recursive = settings_search_is_recursive (editor);
276+ recursive = settings_search_get_recursive ();
277 if (recursive != nautilus_query_get_recursive (priv->query))
278 {
279 nautilus_query_set_recursive (priv->query, recursive);
280@@ -382,7 +396,6 @@ create_query (NautilusQueryEditor *editor)
281 NautilusQueryEditorPrivate *priv;
282 NautilusQuery *query;
283 NautilusFile *file;
284- gboolean recursive;
285 gboolean fts_enabled;
286
287 priv = nautilus_query_editor_get_instance_private (editor);
288@@ -396,11 +409,9 @@ create_query (NautilusQueryEditor *editor)
289
290 nautilus_query_set_search_content (query, fts_enabled);
291
292- recursive = settings_search_is_recursive (editor);
293-
294 nautilus_query_set_text (query, gtk_entry_get_text (GTK_ENTRY (priv->entry)));
295 nautilus_query_set_location (query, priv->location);
296- nautilus_query_set_recursive (query, recursive);
297+ nautilus_query_set_recursive (query, settings_search_get_recursive ());
298
299 nautilus_query_editor_set_query (editor, query);
300
301diff --git a/src/nautilus-query.c b/src/nautilus-query.c
302index 59600d1..c3e4ef4 100644
303--- a/src/nautilus-query.c
304+++ b/src/nautilus-query.c
305@@ -44,11 +44,11 @@ struct _NautilusQuery
306 GList *mime_types;
307 gboolean show_hidden;
308 GPtrArray *date_range;
309+ NautilusQueryRecursive recursive;
310 NautilusQuerySearchType search_type;
311 NautilusQuerySearchContent search_content;
312
313 gboolean searching;
314- gboolean recursive;
315 char **prepared_words;
316 GMutex prepared_words_mutex;
317 };
318@@ -118,7 +118,7 @@ nautilus_query_get_property (GObject *object,
319
320 case PROP_RECURSIVE:
321 {
322- g_value_set_boolean (value, self->recursive);
323+ g_value_set_enum (value, self->recursive);
324 }
325 break;
326
327@@ -181,7 +181,7 @@ nautilus_query_set_property (GObject *object,
328
329 case PROP_RECURSIVE:
330 {
331- nautilus_query_set_recursive (self, g_value_get_boolean (value));
332+ nautilus_query_set_recursive (self, g_value_get_enum (value));
333 }
334 break;
335
336@@ -272,11 +272,12 @@ nautilus_query_class_init (NautilusQueryClass *class)
337 */
338 g_object_class_install_property (gobject_class,
339 PROP_RECURSIVE,
340- g_param_spec_boolean ("recursive",
341- "Whether the query is being performed on subdirectories",
342- "Whether the query is being performed on subdirectories or not",
343- FALSE,
344- G_PARAM_READWRITE));
345+ g_param_spec_enum ("recursive",
346+ "Whether the query is being performed on subdirectories",
347+ "Whether the query is being performed on subdirectories or not",
348+ NAUTILUS_TYPE_QUERY_RECURSIVE,
349+ NAUTILUS_QUERY_RECURSIVE_ALWAYS,
350+ G_PARAM_READWRITE));
351
352 /**
353 * NautilusQuery::search-type:
354@@ -636,22 +637,21 @@ nautilus_query_set_searching (NautilusQuery *query,
355 }
356 }
357
358-gboolean
359+NautilusQueryRecursive
360 nautilus_query_get_recursive (NautilusQuery *query)
361 {
362- g_return_val_if_fail (NAUTILUS_IS_QUERY (query), FALSE);
363+ g_return_val_if_fail (NAUTILUS_IS_QUERY (query),
364+ NAUTILUS_QUERY_RECURSIVE_ALWAYS);
365
366 return query->recursive;
367 }
368
369 void
370-nautilus_query_set_recursive (NautilusQuery *query,
371- gboolean recursive)
372+nautilus_query_set_recursive (NautilusQuery *query,
373+ NautilusQueryRecursive recursive)
374 {
375 g_return_if_fail (NAUTILUS_IS_QUERY (query));
376
377- recursive = !!recursive;
378-
379 if (query->recursive != recursive)
380 {
381 query->recursive = recursive;
382diff --git a/src/nautilus-query.h b/src/nautilus-query.h
383index 2264f50..0e04061 100644
384--- a/src/nautilus-query.h
385+++ b/src/nautilus-query.h
386@@ -35,6 +35,13 @@ typedef enum {
387 NAUTILUS_QUERY_SEARCH_CONTENT_FULL_TEXT,
388 } NautilusQuerySearchContent;
389
390+typedef enum {
391+ NAUTILUS_QUERY_RECURSIVE_NEVER,
392+ NAUTILUS_QUERY_RECURSIVE_ALWAYS,
393+ NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY,
394+ NAUTILUS_QUERY_RECURSIVE_INDEXED_ONLY,
395+} NautilusQueryRecursive;
396+
397 #define NAUTILUS_TYPE_QUERY (nautilus_query_get_type ())
398
399 G_DECLARE_FINAL_TYPE (NautilusQuery, nautilus_query, NAUTILUS, QUERY, GObject)
400@@ -67,10 +74,9 @@ GPtrArray* nautilus_query_get_date_range (NautilusQuery *query);
401 void nautilus_query_set_date_range (NautilusQuery *query,
402 GPtrArray *date_range);
403
404-gboolean nautilus_query_get_recursive (NautilusQuery *query);
405-
406-void nautilus_query_set_recursive (NautilusQuery *query,
407- gboolean recursive);
408+NautilusQueryRecursive nautilus_query_get_recursive (NautilusQuery *query);
409+void nautilus_query_set_recursive (NautilusQuery *query,
410+ NautilusQueryRecursive recursive);
411
412 gboolean nautilus_query_get_searching (NautilusQuery *query);
413
414diff --git a/src/nautilus-search-directory.c b/src/nautilus-search-directory.c
415index ae710f3..d86fda2 100644
416--- a/src/nautilus-search-directory.c
417+++ b/src/nautilus-search-directory.c
418@@ -176,8 +176,6 @@ static void
419 start_search (NautilusSearchDirectory *self)
420 {
421 NautilusSearchEngineModel *model_provider;
422- NautilusSearchEngineSimple *simple_provider;
423- gboolean recursive;
424
425 if (!self->query)
426 {
427@@ -205,10 +203,6 @@ start_search (NautilusSearchDirectory *self)
428 model_provider = nautilus_search_engine_get_model_provider (self->engine);
429 nautilus_search_engine_model_set_model (model_provider, self->base_model);
430
431- simple_provider = nautilus_search_engine_get_simple_provider (self->engine);
432- recursive = nautilus_query_get_recursive (self->query);
433- g_object_set (simple_provider, "recursive", recursive, NULL);
434-
435 reset_file_list (self);
436
437 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (self->engine));
438diff --git a/src/nautilus-search-engine-private.h b/src/nautilus-search-engine-private.h
439new file mode 100644
440index 0000000..8e28ad7
441--- /dev/null
442+++ b/src/nautilus-search-engine-private.h
443@@ -0,0 +1,34 @@
444+/*
445+ * Copyright (C) 2018 Canonical Ltd.
446+ *
447+ * Nautilus is free software; you can redistribute it and/or
448+ * modify it under the terms of the GNU General Public License as
449+ * published by the Free Software Foundation; either version 2 of the
450+ * License, or (at your option) any later version.
451+ *
452+ * Nautilus is distributed in the hope that it will be useful,
453+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
454+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
455+ * General Public License for more details.
456+ *
457+ * You should have received a copy of the GNU General Public
458+ * License along with this program; see the file COPYING. If not,
459+ * see <http://www.gnu.org/licenses/>.
460+ *
461+ * Author: Marco Trevisan <marco@ubuntu.com>
462+ *
463+ */
464+
465+#ifndef NAUTILUS_SEARCH_ENGINE_PRIVATE_H
466+#define NAUTILUS_SEARCH_ENGINE_PRIVATE_H
467+
468+#include "nautilus-query.h"
469+
470+typedef enum {
471+ NAUTILUS_SEARCH_ENGINE_TYPE_NON_INDEXED,
472+ NAUTILUS_SEARCH_ENGINE_TYPE_INDEXED,
473+} NautilusSearchEngineType;
474+
475+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.c
479index 3ec9eb3..0c9ea81 100644
480--- a/src/nautilus-search-engine-simple.c
481+++ b/src/nautilus-search-engine-simple.c
482@@ -20,9 +20,11 @@
483 */
484
485 #include <config.h>
486+
487 #include "nautilus-search-hit.h"
488 #include "nautilus-search-provider.h"
489 #include "nautilus-search-engine-simple.h"
490+#include "nautilus-search-engine-private.h"
491 #include "nautilus-ui-utilities.h"
492 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
493 #include "nautilus-debug.h"
494@@ -35,7 +37,7 @@
495
496 enum
497 {
498- PROP_RECURSIVE = 1,
499+ PROP_0,
500 PROP_RUNNING,
501 NUM_PROPERTIES
502 };
503@@ -52,7 +54,6 @@ typedef struct
504
505 GHashTable *visited;
506
507- gboolean recursive;
508 gint n_processed_files;
509 GList *hits;
510
511@@ -66,8 +67,6 @@ struct _NautilusSearchEngineSimple
512 NautilusQuery *query;
513
514 SearchThreadData *active_search;
515-
516- gboolean recursive;
517 };
518
519 static void nautilus_search_provider_init (NautilusSearchProviderInterface *iface);
520@@ -208,6 +207,9 @@ static void
521 visit_directory (GFile *dir,
522 SearchThreadData *data)
523 {
524+ g_autoptr (GPtrArray) date_range = NULL;
525+ NautilusQuerySearchType type;
526+ NautilusQueryRecursive recursive;
527 GFileEnumerator *enumerator;
528 GFileInfo *info;
529 GFile *child;
530@@ -238,10 +240,12 @@ visit_directory (GFile *dir,
531 return;
532 }
533
534+ type = nautilus_query_get_search_type (data->query);
535+ recursive = nautilus_query_get_recursive (data->query);
536+ date_range = nautilus_query_get_date_range (data->query);
537+
538 while ((info = g_file_enumerator_next_file (enumerator, data->cancellable, NULL)) != NULL)
539 {
540- g_autoptr (GPtrArray) date_range = NULL;
541-
542 display_name = g_file_info_get_display_name (info);
543 if (display_name == NULL)
544 {
545@@ -276,15 +280,12 @@ visit_directory (GFile *dir,
546 mtime = g_file_info_get_attribute_uint64 (info, "time::modified");
547 atime = g_file_info_get_attribute_uint64 (info, "time::access");
548
549- date_range = nautilus_query_get_date_range (data->query);
550 if (found && date_range != NULL)
551 {
552- NautilusQuerySearchType type;
553 guint64 current_file_time;
554
555 initial_date = g_ptr_array_index (date_range, 0);
556 end_date = g_ptr_array_index (date_range, 1);
557- type = nautilus_query_get_search_type (data->query);
558
559 if (type == NAUTILUS_QUERY_SEARCH_TYPE_LAST_ACCESS)
560 {
561@@ -322,7 +323,10 @@ visit_directory (GFile *dir,
562 send_batch (data);
563 }
564
565- if (data->engine->recursive && g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)
566+ if (recursive != NAUTILUS_QUERY_RECURSIVE_NEVER &&
567+ g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY &&
568+ is_recursive_search (NAUTILUS_SEARCH_ENGINE_TYPE_NON_INDEXED,
569+ recursive, child))
570 {
571 id = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_ID_FILE);
572 visited = FALSE;
573@@ -438,9 +442,9 @@ nautilus_search_engine_simple_set_query (NautilusSearchProvider *provider,
574 {
575 NautilusSearchEngineSimple *simple = NAUTILUS_SEARCH_ENGINE_SIMPLE (provider);
576
577- g_object_ref (query);
578 g_clear_object (&simple->query);
579- simple->query = query;
580+
581+ simple->query = g_object_ref (query);
582 }
583
584 static gboolean
585@@ -453,30 +457,6 @@ nautilus_search_engine_simple_is_running (NautilusSearchProvider *provider)
586 return simple->active_search != NULL;
587 }
588
589-static void
590-nautilus_search_engine_simple_set_property (GObject *object,
591- guint arg_id,
592- const GValue *value,
593- GParamSpec *pspec)
594-{
595- NautilusSearchEngineSimple *engine = NAUTILUS_SEARCH_ENGINE_SIMPLE (object);
596-
597- switch (arg_id)
598- {
599- case PROP_RECURSIVE:
600- {
601- engine->recursive = g_value_get_boolean (value);
602- }
603- break;
604-
605- default:
606- {
607- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, arg_id, pspec);
608- }
609- break;
610- }
611-}
612-
613 static void
614 nautilus_search_engine_simple_get_property (GObject *object,
615 guint arg_id,
616@@ -492,12 +472,6 @@ nautilus_search_engine_simple_get_property (GObject *object,
617 g_value_set_boolean (value, nautilus_search_engine_simple_is_running (NAUTILUS_SEARCH_PROVIDER (engine)));
618 }
619 break;
620-
621- case PROP_RECURSIVE:
622- {
623- g_value_set_boolean (value, engine->recursive);
624- }
625- break;
626 }
627 }
628
629@@ -518,20 +492,6 @@ nautilus_search_engine_simple_class_init (NautilusSearchEngineSimpleClass *class
630 gobject_class = G_OBJECT_CLASS (class);
631 gobject_class->finalize = finalize;
632 gobject_class->get_property = nautilus_search_engine_simple_get_property;
633- gobject_class->set_property = nautilus_search_engine_simple_set_property;
634-
635- /**
636- * NautilusSearchEngineSimple::recursive:
637- *
638- * Whether the search is recursive or not.
639- */
640- g_object_class_install_property (gobject_class,
641- PROP_RECURSIVE,
642- g_param_spec_boolean ("recursive",
643- "recursive",
644- "recursive",
645- FALSE,
646- G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
647
648 /**
649 * NautilusSearchEngine::running:
650diff --git a/src/nautilus-search-engine-tracker.c b/src/nautilus-search-engine-tracker.c
651index 8218ea3..98f3c79 100644
652--- a/src/nautilus-search-engine-tracker.c
653+++ b/src/nautilus-search-engine-tracker.c
654@@ -22,7 +22,7 @@
655 #include <config.h>
656 #include "nautilus-search-engine-tracker.h"
657
658-#include "nautilus-global-preferences.h"
659+#include "nautilus-search-engine-private.h"
660 #include "nautilus-search-hit.h"
661 #include "nautilus-search-provider.h"
662 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
663@@ -296,7 +296,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
664 GString *sparql;
665 GList *mimetypes, *l;
666 gint mime_count;
667- gboolean recursive;
668 GPtrArray *date_range;
669
670 tracker = NAUTILUS_SEARCH_ENGINE_TRACKER (provider);
671@@ -325,10 +324,6 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
672 return;
673 }
674
675- recursive = g_settings_get_enum (nautilus_preferences, "recursive-search") == NAUTILUS_SPEED_TRADEOFF_LOCAL_ONLY ||
676- g_settings_get_enum (nautilus_preferences, "recursive-search") == NAUTILUS_SPEED_TRADEOFF_ALWAYS;
677- tracker->recursive = recursive;
678-
679 tracker->fts_enabled = nautilus_query_get_search_content (tracker->query);
680
681 query_text = nautilus_query_get_text (tracker->query);
682@@ -476,16 +471,21 @@ static void
683 nautilus_search_engine_tracker_set_query (NautilusSearchProvider *provider,
684 NautilusQuery *query)
685 {
686+ g_autoptr(GFile) location = NULL;
687 NautilusSearchEngineTracker *tracker;
688
689 tracker = NAUTILUS_SEARCH_ENGINE_TRACKER (provider);
690+ location = nautilus_query_get_location (query);
691
692 if (!tracker->available)
693 return;
694
695- g_object_ref (query);
696 g_clear_object (&tracker->query);
697- tracker->query = query;
698+
699+ tracker->query = g_object_ref (query);
700+ tracker->recursive = is_recursive_search (NAUTILUS_SEARCH_ENGINE_TYPE_INDEXED,
701+ nautilus_query_get_recursive (query),
702+ location);
703 }
704
705 static gboolean
706diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
707index 209bd4f..a545160 100644
708--- a/src/nautilus-search-engine.c
709+++ b/src/nautilus-search-engine.c
710@@ -20,12 +20,14 @@
711 */
712
713 #include <config.h>
714-
715-#include <glib/gi18n.h>
716-#include "nautilus-search-provider.h"
717 #include "nautilus-search-engine.h"
718 #include "nautilus-search-engine-simple.h"
719+#include "nautilus-search-engine-private.h"
720+
721 #include "nautilus-search-engine-model.h"
722+#include "nautilus-search-provider.h"
723+#include "nautilus-file.h"
724+#include <glib/gi18n.h>
725 #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
726 #include "nautilus-debug.h"
727 #include "nautilus-search-engine-tracker.h"
728@@ -417,12 +419,30 @@ nautilus_search_engine_get_model_provider (NautilusSearchEngine *engine)
729 return priv->model;
730 }
731
732-NautilusSearchEngineSimple *
733-nautilus_search_engine_get_simple_provider (NautilusSearchEngine *engine)
734+gboolean
735+is_recursive_search (NautilusSearchEngineType engine_type,
736+ NautilusQueryRecursive recursive,
737+ GFile *location)
738 {
739- NautilusSearchEnginePrivate *priv;
740+ switch (recursive)
741+ {
742+ case NAUTILUS_QUERY_RECURSIVE_NEVER:
743+ return FALSE;
744
745- priv = nautilus_search_engine_get_instance_private (engine);
746+ case NAUTILUS_QUERY_RECURSIVE_ALWAYS:
747+ return TRUE;
748+
749+ case NAUTILUS_QUERY_RECURSIVE_INDEXED_ONLY:
750+ return engine_type == NAUTILUS_SEARCH_ENGINE_TYPE_INDEXED;
751+
752+ case NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY:
753+ {
754+ NautilusFile *file = nautilus_file_get (location);
755+ gboolean remote = !nautilus_file_is_remote (file);
756+ nautilus_file_unref (file);
757+ return remote;
758+ }
759+ }
760
761- return priv->simple;
762+ return TRUE;
763 }
764diff --git a/src/nautilus-search-engine.h b/src/nautilus-search-engine.h
765index 0416e83..435908a 100644
766--- a/src/nautilus-search-engine.h
767+++ b/src/nautilus-search-engine.h
768@@ -42,8 +42,6 @@ struct _NautilusSearchEngineClass
769 NautilusSearchEngine *nautilus_search_engine_new (void);
770 NautilusSearchEngineModel *
771 nautilus_search_engine_get_model_provider (NautilusSearchEngine *engine);
772-NautilusSearchEngineSimple *
773- nautilus_search_engine_get_simple_provider (NautilusSearchEngine *engine);
774
775 G_END_DECLS
776
777diff --git a/src/nautilus-shell-search-provider.c b/src/nautilus-shell-search-provider.c
778index cdadc08..b95babf 100644
779--- a/src/nautilus-shell-search-provider.c
780+++ b/src/nautilus-shell-search-provider.c
781@@ -426,15 +426,32 @@ search_add_volumes_and_bookmarks (PendingSearch *search)
782 g_object_unref (volume_monitor);
783 }
784
785+static NautilusQuery*
786+shell_query_new (gchar **terms)
787+{
788+ NautilusQuery *query;
789+ g_autoptr (GFile) home = NULL;
790+ g_autofree gchar *terms_joined = NULL;
791+
792+ terms_joined = g_strjoinv (" ", terms);
793+ home = g_file_new_for_path (g_get_home_dir ());
794+
795+ 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);
799+ nautilus_query_set_location (query, home);
800+
801+ return query;
802+}
803+
804 static void
805 execute_search (NautilusShellSearchProvider *self,
806 GDBusMethodInvocation *invocation,
807 gchar **terms)
808 {
809- gchar *terms_joined;
810 NautilusQuery *query;
811 PendingSearch *pending_search;
812- GFile *home;
813
814 cancel_current_search (self);
815
816@@ -446,13 +463,7 @@ execute_search (NautilusShellSearchProvider *self,
817 return;
818 }
819
820- terms_joined = g_strjoinv (" ", terms);
821- home = g_file_new_for_path (g_get_home_dir ());
822-
823- query = nautilus_query_new ();
824- nautilus_query_set_show_hidden_files (query, FALSE);
825- nautilus_query_set_text (query, terms_joined);
826- nautilus_query_set_location (query, home);
827+ query = shell_query_new (terms);
828
829 pending_search = g_slice_new0 (PendingSearch);
830 pending_search->invocation = g_object_ref (invocation);
831@@ -479,9 +490,6 @@ execute_search (NautilusShellSearchProvider *self,
832 nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (pending_search->engine),
833 query);
834 nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (pending_search->engine));
835-
836- g_clear_object (&home);
837- g_free (terms_joined);
838 }
839
840 static gboolean
841@@ -713,13 +721,9 @@ handle_launch_search (NautilusShellSearchProvider2 *skeleton,
842 gpointer user_data)
843 {
844 GApplication *app = g_application_get_default ();
845- gchar *string = g_strjoinv (" ", terms);
846- gchar *uri = nautilus_get_home_directory_uri ();
847+ g_autoptr (NautilusQuery) query = shell_query_new (terms);
848
849- nautilus_application_search (NAUTILUS_APPLICATION (app), uri, string);
850-
851- g_free (string);
852- g_free (uri);
853+ nautilus_application_search (NAUTILUS_APPLICATION (app), query);
854
855 nautilus_shell_search_provider2_complete_launch_search (skeleton, invocation);
856 return TRUE;
857diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
858index a9911ee..6935de3 100644
859--- a/src/nautilus-window-slot.c
860+++ b/src/nautilus-window-slot.c
861@@ -100,6 +100,7 @@ typedef struct
862
863 /* Query editor */
864 NautilusQueryEditor *query_editor;
865+ NautilusQuery *pending_search_query;
866 gulong qe_changed_id;
867 gulong qe_cancel_id;
868 gulong qe_activated_id;
869@@ -110,7 +111,6 @@ typedef struct
870 * finish. Used for showing a spinner to provide feedback to the user. */
871 gboolean allow_stop;
872 gboolean needs_reload;
873- gchar *pending_search_text;
874
875 /* New location. */
876 GFile *pending_location;
877@@ -361,9 +361,9 @@ update_search_visible (NautilusWindowSlot *self)
878 g_object_unref (query);
879 }
880
881- if (priv->pending_search_text)
882+ if (priv->pending_search_query)
883 {
884- nautilus_window_slot_search (self, g_strdup (priv->pending_search_text));
885+ nautilus_window_slot_search (self, g_object_ref (priv->pending_search_query));
886 }
887 }
888
889@@ -589,17 +589,13 @@ nautilus_window_slot_get_search_visible (NautilusWindowSlot *self)
890
891 void
892 nautilus_window_slot_search (NautilusWindowSlot *self,
893- const gchar *text)
894+ NautilusQuery *query)
895 {
896 NautilusWindowSlotPrivate *priv;
897 NautilusView *view;
898
899 priv = nautilus_window_slot_get_instance_private (self);
900- if (priv->pending_search_text)
901- {
902- g_free (priv->pending_search_text);
903- priv->pending_search_text = NULL;
904- }
905+ g_clear_object (&priv->pending_search_query);
906
907 view = nautilus_window_slot_get_current_view (self);
908 /* We could call this when the location is still being checked in the
909@@ -608,11 +604,11 @@ nautilus_window_slot_search (NautilusWindowSlot *self,
910 if (view)
911 {
912 nautilus_window_slot_set_search_visible (self, TRUE);
913- nautilus_query_editor_set_text (priv->query_editor, text);
914+ nautilus_query_editor_set_query (priv->query_editor, query);
915 }
916 else
917 {
918- priv->pending_search_text = g_strdup (text);
919+ priv->pending_search_query = g_object_ref (query);
920 }
921 }
922
923@@ -2814,6 +2810,7 @@ nautilus_window_slot_dispose (GObject *object)
924 g_clear_object (&priv->current_location_bookmark);
925 g_clear_object (&priv->last_location_bookmark);
926 g_clear_object (&priv->slot_action_group);
927+ g_clear_object (&priv->pending_search_query);
928
929 g_clear_pointer (&priv->find_mount_cancellable, g_cancellable_cancel);
930
931diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
932index 573357d..f67b6ab 100644
933--- a/src/nautilus-window-slot.h
934+++ b/src/nautilus-window-slot.h
935@@ -112,7 +112,7 @@ void nautilus_window_slot_set_active (NautilusWindowSlot *
936 gboolean nautilus_window_slot_get_loading (NautilusWindowSlot *slot);
937
938 void nautilus_window_slot_search (NautilusWindowSlot *slot,
939- const gchar *text);
940+ NautilusQuery *query);
941
942 gboolean nautilus_window_slot_handles_location (NautilusWindowSlot *self,
943 GFile *location);
944diff --git a/src/nautilus-window.c b/src/nautilus-window.c
945index a23d515..8eab985 100644
946--- a/src/nautilus-window.c
947+++ b/src/nautilus-window.c
948@@ -3100,14 +3100,14 @@ nautilus_window_show_about_dialog (NautilusWindow *window)
949
950 void
951 nautilus_window_search (NautilusWindow *window,
952- const gchar *text)
953+ NautilusQuery *query)
954 {
955 NautilusWindowSlot *active_slot;
956
957 active_slot = nautilus_window_get_active_slot (window);
958 if (active_slot)
959 {
960- nautilus_window_slot_search (active_slot, text);
961+ nautilus_window_slot_search (active_slot, query);
962 }
963 else
964 {
965diff --git a/src/nautilus-window.h b/src/nautilus-window.h
966index 39b16e7..c1196d3 100644
967--- a/src/nautilus-window.h
968+++ b/src/nautilus-window.h
969@@ -135,7 +135,7 @@ void nautilus_window_end_dnd (NautilusWindow *window,
970 GdkDragContext *context);
971
972 void nautilus_window_search (NautilusWindow *window,
973- const gchar *text);
974+ NautilusQuery *query);
975
976 void nautilus_window_initialize_slot (NautilusWindow *window,
977 NautilusWindowSlot *slot,
diff --git a/debian/patches/series b/debian/patches/series
index d6c50a8..be13b9e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,5 @@
1Revert-Revert-nautilus-file-Don-t-show-thumbnails-for-the.patch
2Revert-Revert-files-view-Remove-new-empty-folder-name-sug.patch
1multiarch_fallback.patch3multiarch_fallback.patch
203_translations_list_update.patch403_translations_list_update.patch
304_suppress_umount_in_ltsp.patch504_suppress_umount_in_ltsp.patch
@@ -15,9 +17,12 @@ ubuntu_backspace_behaviour.patch
15#Needs updating17#Needs updating
16#16_unity_new_documents.patch18#16_unity_new_documents.patch
170015-tracker-search-engine-don-t-start-it-if-not-availabl.patch190015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
20query-add-recursive-flags-and-use-it-in-search-engines.patch
180016-search-engine-add-a-recent-search-engine-listing-Gtk.patch210016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
190017-recent-add-function-to-update-manager-on-file-rename.patch220017-recent-add-function-to-update-manager-on-file-rename.patch
200018-search-engine-add-locate-based-search-engine.patch230018-search-engine-add-locate-based-search-engine.patch
21appstream-compulsory.patch24appstream-compulsory.patch
22server_list_segfault.patch25server_list_segfault.patch
23clear_pending_selection.patch26clear_pending_selection.patch
27git_middle_tab.patch
28nautilusgtkplacesview-show-error-if-volume-is-not-mounted.patch
diff --git a/meson.build b/meson.build
index 18e645a..6256193 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
1project ('nautilus', 'c',1project ('nautilus', 'c',
2 version: '3.26.3',2 version: '3.26.3.1',
3 meson_version: '>=0.40.0',3 meson_version: '>=0.40.0',
4 license: 'GPL3+')4 license: 'GPL3+')
55
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
index fc765be..d6ac35a 100644
--- a/src/nautilus-file.c
+++ b/src/nautilus-file.c
@@ -5496,7 +5496,7 @@ nautilus_thumbnail_is_limited_by_zoom (int size,
54965496
5497 zoom_level = size * scale;5497 zoom_level = size * scale;
54985498
5499 if (zoom_level <= NAUTILUS_LIST_ICON_SIZE_STANDARD)5499 if (zoom_level <= NAUTILUS_LIST_ICON_SIZE_SMALL)
5500 {5500 {
5501 return TRUE;5501 return TRUE;
5502 }5502 }
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 9b7b9b9..8784f63 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -2047,8 +2047,9 @@ static void
2047nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,2047nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
2048 gboolean with_selection)2048 gboolean with_selection)
2049{2049{
2050 g_autoptr (NautilusDirectory) containing_directory = NULL;2050 NautilusDirectory *containing_directory;
2051 NautilusFilesViewPrivate *priv;2051 NautilusFilesViewPrivate *priv;
2052 GList *selection;
2052 g_autofree char *uri = NULL;2053 g_autofree char *uri = NULL;
2053 g_autofree char *common_prefix = NULL;2054 g_autofree char *common_prefix = NULL;
20542055
@@ -2062,13 +2063,8 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
2062 uri = nautilus_files_view_get_backing_uri (view);2063 uri = nautilus_files_view_get_backing_uri (view);
2063 containing_directory = nautilus_directory_get_by_uri (uri);2064 containing_directory = nautilus_directory_get_by_uri (uri);
20642065
2065 if (with_selection)2066 selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
2066 {2067 common_prefix = nautilus_get_common_filename_prefix (selection, MIN_COMMON_FILENAME_PREFIX_LENGTH);
2067 GList *selection;
2068 selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
2069 common_prefix = nautilus_get_common_filename_prefix (selection, MIN_COMMON_FILENAME_PREFIX_LENGTH);
2070 nautilus_file_list_free (selection);
2071 }
20722068
2073 priv->new_folder_controller =2069 priv->new_folder_controller =
2074 nautilus_new_folder_dialog_controller_new (nautilus_files_view_get_containing_window (view),2070 nautilus_new_folder_dialog_controller_new (nautilus_files_view_get_containing_window (view),
@@ -2084,6 +2080,9 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
2084 "cancelled",2080 "cancelled",
2085 (GCallback) new_folder_dialog_controller_on_cancelled,2081 (GCallback) new_folder_dialog_controller_on_cancelled,
2086 view);2082 view);
2083
2084 nautilus_file_list_free (selection);
2085 nautilus_directory_unref (containing_directory);
2087}2086}
20882087
2089typedef struct2088typedef struct
diff --git a/src/nautilus-trash-monitor.c b/src/nautilus-trash-monitor.c
index 97f4874..1e156e1 100644
--- a/src/nautilus-trash-monitor.c
+++ b/src/nautilus-trash-monitor.c
@@ -29,7 +29,7 @@
29#include <gio/gio.h>29#include <gio/gio.h>
30#include <string.h>30#include <string.h>
3131
32#define UPDATE_RATE_SECONDS 532#define UPDATE_RATE_SECONDS 1
3333
34struct NautilusTrashMonitorDetails34struct NautilusTrashMonitorDetails
35{35{

Subscribers

People subscribed via source and target branches