[nautilus] nautilus-query-editor: set query recursive option as it is



commit feadc9fee9489ee358fb70c648ca0396dbf0086f
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date:   Thu Jun 7 14:41:40 2018 +0200

    nautilus-query-editor: set query recursive option as it is
    
    Just use settings_search_get_recursive_for_location to prompt to the user
    what's going to happen, although this might not be 100% certain, if a sub-dir
    is actually a network-mounted folder.

 src/nautilus-file-utilities.c | 37 ++++++++++++++++++++++++-------------
 src/nautilus-file-utilities.h |  3 ++-
 src/nautilus-query-editor.c   | 15 ++++++++-------
 src/nautilus-window-slot.c    |  4 ++--
 4 files changed, 36 insertions(+), 23 deletions(-)
---
diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c
index 6a1c3e4f7..54903e1c0 100644
--- a/src/nautilus-file-utilities.c
+++ b/src/nautilus-file-utilities.c
@@ -1393,28 +1393,39 @@ nautilus_uri_to_native_uri (const gchar *uri)
 }
 
 NautilusQueryRecursive
-location_settings_search_get_recursive (GFile *location)
+location_settings_search_get_recursive (void)
 {
-    g_autoptr (NautilusFile) file = NULL;
-
-    g_return_val_if_fail (location, NAUTILUS_QUERY_RECURSIVE_ALWAYS);
-
-    file = nautilus_file_get_existing (location);
-
-    g_return_val_if_fail (file, NAUTILUS_QUERY_RECURSIVE_ALWAYS);
-
     switch (g_settings_get_enum (nautilus_preferences, "recursive-search"))
     {
         case NAUTILUS_SPEED_TRADEOFF_ALWAYS:
             return NAUTILUS_QUERY_RECURSIVE_ALWAYS;
         case NAUTILUS_SPEED_TRADEOFF_LOCAL_ONLY:
-          return nautilus_file_is_remote (file) ?
-                 NAUTILUS_QUERY_RECURSIVE_NEVER :
-                 NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY;
+            return NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY;
         case NAUTILUS_SPEED_TRADEOFF_NEVER:
             return NAUTILUS_QUERY_RECURSIVE_NEVER;
     }
 
-    return NAUTILUS_QUERY_RECURSIVE_NEVER;
+    return NAUTILUS_QUERY_RECURSIVE_ALWAYS;
 }
 
+NautilusQueryRecursive
+location_settings_search_get_recursive_for_location (GFile *location)
+{
+    NautilusQueryRecursive recursive = location_settings_search_get_recursive ();
+
+    g_return_val_if_fail (location, recursive);
+
+    if (recursive == NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY)
+    {
+        g_autoptr (NautilusFile) file = nautilus_file_get_existing (location);
+
+        g_return_val_if_fail (file != NULL, recursive);
+
+        if (nautilus_file_is_remote (file))
+        {
+            recursive = NAUTILUS_QUERY_RECURSIVE_NEVER;
+        }
+    }
+
+    return recursive;
+}
diff --git a/src/nautilus-file-utilities.h b/src/nautilus-file-utilities.h
index c0bdcaabb..de21f742f 100644
--- a/src/nautilus-file-utilities.h
+++ b/src/nautilus-file-utilities.h
@@ -124,4 +124,5 @@ GList * nautilus_file_list_from_uri_list (GList *uris);
 
 gchar * nautilus_uri_to_native_uri (const gchar *uri);
 
-NautilusQueryRecursive location_settings_search_get_recursive (GFile *location);
+NautilusQueryRecursive location_settings_search_get_recursive (void);
+NautilusQueryRecursive location_settings_search_get_recursive_for_location (GFile *location);
diff --git a/src/nautilus-query-editor.c b/src/nautilus-query-editor.c
index 03424fe0a..8f48b3c8e 100644
--- a/src/nautilus-query-editor.c
+++ b/src/nautilus-query-editor.c
@@ -97,7 +97,7 @@ update_fts_sensitivity (NautilusQueryEditor *editor)
         fts_sensitive = !nautilus_file_is_other_locations (file) &&
                         !g_str_has_prefix (uri, "network://") &&
                         !(nautilus_file_is_remote (file) &&
-                          location_settings_search_get_recursive (editor->location) == 
NAUTILUS_QUERY_RECURSIVE_NEVER);
+                          location_settings_search_get_recursive_for_location (editor->location) == 
NAUTILUS_QUERY_RECURSIVE_NEVER);
         nautilus_search_popover_set_fts_sensitive (NAUTILUS_SEARCH_POPOVER (editor->popover),
                                                    fts_sensitive);
     }
@@ -110,12 +110,12 @@ recursive_search_preferences_changed (GSettings           *settings,
 {
     NautilusQueryRecursive recursive;
 
-    if (!editor->location || !editor->query)
+    if (!editor->query)
     {
         return;
     }
 
-    recursive = location_settings_search_get_recursive (editor->location);
+    recursive = location_settings_search_get_recursive ();
     if (recursive != nautilus_query_get_recursive (editor->query))
     {
         nautilus_query_set_recursive (editor->query, recursive);
@@ -312,7 +312,6 @@ create_query (NautilusQueryEditor *editor)
 {
     NautilusQuery *query;
     g_autoptr (NautilusFile) file = NULL;
-    NautilusQueryRecursive recursive;
     gboolean fts_enabled;
 
     g_return_if_fail (editor->query == NULL);
@@ -329,11 +328,13 @@ create_query (NautilusQueryEditor *editor)
 
     nautilus_query_set_search_content (query, fts_enabled);
 
-    recursive = location_settings_search_get_recursive (editor->location);
-
     nautilus_query_set_text (query, gtk_entry_get_text (GTK_ENTRY (editor->entry)));
     nautilus_query_set_location (query, editor->location);
-    nautilus_query_set_recursive (query, recursive);
+
+    /* We only set the query using the global setting for recursivity here,
+     * it's up to the search engine to check weather it can proceed with
+     * deep search in the current directory or not. */
+    nautilus_query_set_recursive (query, location_settings_search_get_recursive ());
 
     nautilus_query_editor_set_query (editor, query);
 }
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 3b5bbd597..f3e596445 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -1157,11 +1157,11 @@ update_search_information (NautilusWindowSlot *self)
             label = _("Searching network locations only");
         }
         else if (nautilus_file_is_remote (file) &&
-                 location_settings_search_get_recursive (priv->location) == NAUTILUS_QUERY_RECURSIVE_NEVER)
+                 location_settings_search_get_recursive_for_location (priv->location) == 
NAUTILUS_QUERY_RECURSIVE_NEVER)
         {
             label = _("Remote location — only searching the current folder");
         }
-        else if (location_settings_search_get_recursive (priv->location) == NAUTILUS_QUERY_RECURSIVE_NEVER)
+        else if (location_settings_search_get_recursive_for_location (priv->location) == 
NAUTILUS_QUERY_RECURSIVE_NEVER)
         {
             label = _("Only searching the current folder");
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]