void caja_navigation_window_pane_set_bar_mode (CajaNavigationWindowPane *pane, CajaBarMode mode) { gboolean use_entry; GtkWidget *focus_widget; CajaNavigationWindow *window; switch (mode) { case CAJA_BAR_PATH: gtk_widget_show (pane->path_bar); gtk_widget_hide (pane->navigation_bar); gtk_widget_hide (pane->search_bar); break; case CAJA_BAR_NAVIGATION: gtk_widget_show (pane->navigation_bar); gtk_widget_hide (pane->path_bar); gtk_widget_hide (pane->search_bar); break; case CAJA_BAR_SEARCH: gtk_widget_show (pane->search_bar); gtk_widget_hide (pane->path_bar); gtk_widget_hide (pane->navigation_bar); break; } if (mode == CAJA_BAR_NAVIGATION || mode == CAJA_BAR_PATH) { use_entry = (mode == CAJA_BAR_NAVIGATION); g_signal_handlers_block_by_func (pane->location_button, G_CALLBACK (location_button_toggled_cb), pane); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pane->location_button), use_entry); g_signal_handlers_unblock_by_func (pane->location_button, G_CALLBACK (location_button_toggled_cb), pane); } window = CAJA_NAVIGATION_WINDOW (CAJA_WINDOW_PANE (pane)->window); focus_widget = gtk_window_get_focus (GTK_WINDOW (window)); if (focus_widget != NULL && !caja_navigation_window_is_in_temporary_navigation_bar (focus_widget, window) && !caja_navigation_window_is_in_temporary_search_bar (focus_widget, window)) { if (mode == CAJA_BAR_NAVIGATION || mode == CAJA_BAR_PATH) { caja_navigation_window_set_search_button (window, FALSE); } else { caja_navigation_window_set_search_button (window, TRUE); } } }
static void remember_focus_widget (CajaNavigationWindow *window) { CajaNavigationWindow *navigation_window; GtkWidget *focus_widget; navigation_window = CAJA_NAVIGATION_WINDOW (window); focus_widget = gtk_window_get_focus (GTK_WINDOW (window)); if (focus_widget != NULL && !caja_navigation_window_is_in_temporary_navigation_bar (focus_widget, navigation_window) && !caja_navigation_window_is_in_temporary_search_bar (focus_widget, navigation_window)) { caja_navigation_window_unset_focus_widget (navigation_window); navigation_window->details->last_focus_widget = focus_widget; g_object_add_weak_pointer (G_OBJECT (focus_widget), (gpointer *) &(CAJA_NAVIGATION_WINDOW (window)->details->last_focus_widget)); } }