summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2012-07-16 21:45:35 -0400
committerCosimo Cecchi <cosimoc@gnome.org>2012-07-16 21:51:52 -0400
commit6e33c7faefb42d4f0eace063e91bf26eb7326f99 (patch)
tree2c83beea5ec0cc6059bc40ea9582b80a4dd6a216
parent15f3e0fc6adfe21eb51494803c8364b36c72a4ff (diff)
downloadnautilus-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.c20
-rw-r--r--src/nautilus-window-slot.h1
-rw-r--r--src/nautilus-window.c7
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);