summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nautilus-file-utilities.c37
-rw-r--r--src/nautilus-file-utilities.h3
-rw-r--r--src/nautilus-query-editor.c15
-rw-r--r--src/nautilus-window-slot.c4
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");
}