static void real_update_query_editor (CajaWindowSlot *slot) { GtkWidget *query_editor; CajaQuery *query; CajaDirectory *directory; CajaSearchDirectory *search_directory; directory = caja_directory_get (slot->location); if (CAJA_IS_SEARCH_DIRECTORY (directory)) { search_directory = CAJA_SEARCH_DIRECTORY (directory); query_editor = caja_query_editor_new (caja_search_directory_is_saved_search (search_directory), caja_search_directory_is_indexed (search_directory)); slot->query_editor = CAJA_QUERY_EDITOR (query_editor); caja_window_slot_add_extra_location_widget (slot, query_editor); gtk_widget_show (query_editor); g_signal_connect_object (query_editor, "changed", G_CALLBACK (query_editor_changed_callback), slot, 0); query = caja_search_directory_get_query (search_directory); if (query != NULL) { caja_query_editor_set_query (CAJA_QUERY_EDITOR (query_editor), query); g_object_unref (query); } else { caja_query_editor_set_default_query (CAJA_QUERY_EDITOR (query_editor)); } } caja_directory_unref (directory); }
static void search_bar_activate_callback (CajaSearchBar *bar, CajaNavigationWindowPane *pane) { char *uri, *current_uri; CajaDirectory *directory; CajaSearchDirectory *search_directory; CajaQuery *query; GFile *location; uri = caja_search_directory_generate_new_uri (); location = g_file_new_for_uri (uri); g_free (uri); directory = caja_directory_get (location); g_assert (CAJA_IS_SEARCH_DIRECTORY (directory)); search_directory = CAJA_SEARCH_DIRECTORY (directory); query = caja_search_bar_get_query (CAJA_SEARCH_BAR (pane->search_bar)); if (query != NULL) { CajaWindowSlot *slot = CAJA_WINDOW_PANE (pane)->active_slot; if (!caja_search_directory_is_indexed (search_directory)) { current_uri = caja_window_slot_get_location_uri (slot); caja_query_set_location (query, current_uri); g_free (current_uri); } caja_search_directory_set_query (search_directory, query); g_object_unref (query); } caja_window_slot_go_to (CAJA_WINDOW_PANE (pane)->active_slot, location, FALSE); caja_directory_unref (directory); g_object_unref (location); }