summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nautilus-application.c15
-rw-r--r--src/nautilus-application.h4
-rw-r--r--src/nautilus-query-editor.c12
-rw-r--r--src/nautilus-query-editor.h2
-rw-r--r--src/nautilus-window-slot.c27
-rw-r--r--src/nautilus-window-slot.h3
-rw-r--r--src/nautilus-window.c13
-rw-r--r--src/nautilus-window.h3
8 files changed, 79 insertions, 0 deletions
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index b25021f9c..0547c298d 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -1372,3 +1372,18 @@ nautilus_application_new (void)
"register-session", TRUE,
NULL);
}
+
+void
+nautilus_application_search (NautilusApplication *application,
+ const gchar *uri,
+ const gchar *text)
+{
+ NautilusWindow *window;
+ GFile *location;
+
+ location = g_file_new_for_uri (uri);
+ window = open_window (application, location);
+ nautilus_window_search (window, text);
+
+ g_object_unref (location);
+}
diff --git a/src/nautilus-application.h b/src/nautilus-application.h
index 4aaa90c7d..a57da53a8 100644
--- a/src/nautilus-application.h
+++ b/src/nautilus-application.h
@@ -85,4 +85,8 @@ void nautilus_application_edit_bookmarks (NautilusApplication *application,
GtkWidget * nautilus_application_connect_server (NautilusApplication *application,
NautilusWindow *window);
+
+void nautilus_application_search (NautilusApplication *application,
+ const gchar *uri,
+ const gchar *text);
#endif /* __NAUTILUS_APPLICATION_H__ */
diff --git a/src/nautilus-query-editor.c b/src/nautilus-query-editor.c
index 0421fb96b..a9e452adb 100644
--- a/src/nautilus-query-editor.c
+++ b/src/nautilus-query-editor.c
@@ -726,3 +726,15 @@ nautilus_query_editor_set_query (NautilusQueryEditor *editor,
g_free (text);
}
+
+void
+nautilus_query_editor_set_text (NautilusQueryEditor *editor,
+ const gchar *text)
+{
+ NautilusQueryEditorPrivate *priv;
+
+ priv = nautilus_query_editor_get_instance_private (editor);
+
+ /* The handler of the entry will take care of everything */
+ gtk_entry_set_text (GTK_ENTRY (priv->entry), text);
+}
diff --git a/src/nautilus-query-editor.h b/src/nautilus-query-editor.h
index d166c6d00..11aa8aca1 100644
--- a/src/nautilus-query-editor.h
+++ b/src/nautilus-query-editor.h
@@ -52,5 +52,7 @@ void nautilus_query_editor_set_query (NautilusQueryEditor *editor,
GFile * nautilus_query_editor_get_location (NautilusQueryEditor *editor);
void nautilus_query_editor_set_location (NautilusQueryEditor *editor,
GFile *location);
+void nautilus_query_editor_set_text (NautilusQueryEditor *editor,
+ const gchar *text);
#endif /* NAUTILUS_QUERY_EDITOR_H */
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 839badc57..16e2710c6 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -110,6 +110,7 @@ struct NautilusWindowSlotDetails {
* finish. Used for showing a spinner to provide feedback to the user. */
gboolean allow_stop;
gboolean needs_reload;
+ gchar *pending_search_text;
/* New location. */
GFile *pending_location;
@@ -267,6 +268,9 @@ update_search_visible (NautilusWindowSlot *slot)
nautilus_window_slot_set_search_visible (slot, FALSE);
g_object_unref (query);
}
+
+ if (slot->details->pending_search_text)
+ nautilus_window_slot_search (slot, g_strdup (slot->details->pending_search_text));
}
static void
@@ -456,6 +460,29 @@ nautilus_window_slot_get_search_visible (NautilusWindowSlot *slot)
return searching;
}
+void
+nautilus_window_slot_search (NautilusWindowSlot *slot,
+ const gchar *text)
+{
+ NautilusView *view;
+
+ if (slot->details->pending_search_text) {
+ g_free (slot->details->pending_search_text);
+ slot->details->pending_search_text = NULL;
+ }
+
+ view = nautilus_window_slot_get_current_view (slot);
+ /* We could call this when the location is still being checked in the
+ * window slot. For that, save the search we want to do for once we have
+ * a view set up */
+ if (view) {
+ nautilus_window_slot_set_search_visible (slot, TRUE);
+ nautilus_query_editor_set_text (slot->details->query_editor, text);
+ } else {
+ slot->details->pending_search_text = g_strdup (text);
+ }
+}
+
gboolean
nautilus_window_slot_handle_event (NautilusWindowSlot *slot,
GdkEventKey *event)
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index 14fa425df..1c4b4af79 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -107,6 +107,9 @@ void nautilus_window_slot_set_active (NautilusWindowSlot *
gboolean active);
gboolean nautilus_window_slot_get_loading (NautilusWindowSlot *slot);
+void nautilus_window_slot_search (NautilusWindowSlot *slot,
+ const gchar *text);
+
/* Only used by slot-dnd */
NautilusView* nautilus_window_slot_get_current_view (NautilusWindowSlot *slot);
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 4c9170953..ce1d9aad0 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -2737,3 +2737,16 @@ nautilus_window_show_about_dialog (NautilusWindow *window)
"logo-icon-name", "system-file-manager",
NULL);
}
+
+void
+nautilus_window_search (NautilusWindow *window,
+ const gchar *text)
+{
+ NautilusWindowSlot *active_slot;
+
+ active_slot = nautilus_window_get_active_slot (window);
+ if (active_slot)
+ nautilus_window_slot_search (active_slot, text);
+ else
+ g_warning ("Trying search on a slot but no active slot present");
+}
diff --git a/src/nautilus-window.h b/src/nautilus-window.h
index ec53ab701..12b755c62 100644
--- a/src/nautilus-window.h
+++ b/src/nautilus-window.h
@@ -147,4 +147,7 @@ void nautilus_window_start_dnd (NautilusWindow *window,
GdkDragContext *context);
void nautilus_window_end_dnd (NautilusWindow *window,
GdkDragContext *context);
+
+void nautilus_window_search (NautilusWindow *window,
+ const gchar *text);
#endif