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);
        }
    }
}
Esempio n. 2
0
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));
    }
}