diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2012-07-16 21:45:35 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2012-07-16 21:51:52 -0400 |
commit | 6e33c7faefb42d4f0eace063e91bf26eb7326f99 (patch) | |
tree | 2c83beea5ec0cc6059bc40ea9582b80a4dd6a216 | |
parent | 15f3e0fc6adfe21eb51494803c8364b36c72a4ff (diff) | |
download | nautilus-6e33c7faefb42d4f0eace063e91bf26eb7326f99.tar.gz |
slot: reidrect an empty search to the query editor location
Instead of relying on search engines returning the exact result set for
an empty query. This is also faster.
-rw-r--r-- | src/nautilus-window-slot.c | 20 | ||||
-rw-r--r-- | src/nautilus-window-slot.h | 1 | ||||
-rw-r--r-- | src/nautilus-window.c | 7 |
3 files changed, 22 insertions, 6 deletions
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c index 033fb2f8e..feec42493 100644 --- a/src/nautilus-window-slot.c +++ b/src/nautilus-window-slot.c @@ -64,6 +64,8 @@ sync_search_directory (NautilusWindowSlot *slot) { NautilusDirectory *directory; NautilusQuery *query; + gchar *text; + GFile *location; g_assert (NAUTILUS_IS_FILE (slot->viewed_file)); @@ -71,11 +73,21 @@ sync_search_directory (NautilusWindowSlot *slot) g_assert (NAUTILUS_IS_SEARCH_DIRECTORY (directory)); query = nautilus_query_editor_get_query (slot->query_editor); - nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory), - query); - g_object_unref (query); - nautilus_window_slot_reload (slot); + text = nautilus_query_get_text (query); + + if (!strlen (text)) { + location = nautilus_query_editor_get_location (slot->query_editor); + slot->load_with_search = TRUE; + nautilus_window_slot_open_location (slot, location, 0); + g_object_unref (location); + } else { + nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory), + query); + nautilus_window_slot_reload (slot); + } + g_free (text); + g_object_unref (query); nautilus_directory_unref (directory); } diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h index c925c4ec0..b72f812e5 100644 --- a/src/nautilus-window-slot.h +++ b/src/nautilus-window-slot.h @@ -105,6 +105,7 @@ struct NautilusWindowSlot { gboolean tried_mount; NautilusWindowGoToCallback open_callback; gpointer open_callback_user_data; + gboolean load_with_search; GCancellable *find_mount_cancellable; diff --git a/src/nautilus-window.c b/src/nautilus-window.c index 9c222e894..f7e5c3a1f 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -712,15 +712,18 @@ nautilus_window_sync_search_widgets (NautilusWindow *window) { NautilusDirectory *directory; NautilusSearchDirectory *search_directory; + NautilusWindowSlot *slot; search_directory = NULL; + slot = window->details->active_slot; - directory = nautilus_directory_get (window->details->active_slot->location); + directory = nautilus_directory_get (slot->location); if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) { search_directory = NAUTILUS_SEARCH_DIRECTORY (directory); } - if (search_directory != NULL) { + if (search_directory != NULL || slot->load_with_search) { + slot->load_with_search = FALSE; toggle_toolbar_search_button (window, TRUE); } else { toggle_toolbar_search_button (window, FALSE); |