static void action_search (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GtkApplication *application = user_data; const gchar *string, *uri; NautilusQuery *query; NautilusDirectory *directory; gchar *search_uri; NautilusWindow *window; GtkWindow *cur_window; GFile *location; g_variant_get (parameter, "(ss)", &uri, &string); if (strlen (string) == 0 || strlen (uri) == 0) { return; } query = nautilus_query_new (); nautilus_query_set_location (query, uri); nautilus_query_set_text (query, string); search_uri = nautilus_search_directory_generate_new_uri (); location = g_file_new_for_uri (search_uri); g_free (search_uri); directory = nautilus_directory_get (location); nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory), query); cur_window = gtk_application_get_active_window (application); window = nautilus_application_create_window (NAUTILUS_APPLICATION (application), cur_window ? gtk_window_get_screen (cur_window) : gdk_screen_get_default ()); nautilus_window_slot_open_location (nautilus_window_get_active_slot (window), location, 0); nautilus_directory_unref (directory); g_object_unref (query); g_object_unref (location); }
static void create_new_search (NautilusWindowSlot *slot) { char *uri; NautilusDirectory *directory; GFile *location; uri = nautilus_search_directory_generate_new_uri (); location = g_file_new_for_uri (uri); directory = nautilus_directory_get (location); g_assert (NAUTILUS_IS_SEARCH_DIRECTORY (directory)); nautilus_window_slot_open_location_full (slot, location, 0, NULL, sync_search_location_cb, slot); nautilus_directory_unref (directory); g_object_unref (location); g_free (uri); }