diff options
-rw-r--r-- | src/nautilus-file-utilities.c | 37 | ||||
-rw-r--r-- | src/nautilus-file-utilities.h | 3 | ||||
-rw-r--r-- | src/nautilus-query-editor.c | 15 | ||||
-rw-r--r-- | 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"); } |