Index: gedit/gedit-commands-view.c =================================================================== RCS file: /cvs/gnome/gedit/gedit/gedit-commands-view.c,v retrieving revision 1.2 diff -u -p -r1.2 gedit-commands-view.c --- gedit/gedit-commands-view.c 12 Dec 2005 17:27:55 -0000 1.2 +++ gedit/gedit-commands-view.c 9 Feb 2006 13:19:18 -0000 @@ -71,12 +71,28 @@ gedit_cmd_view_show_side_pane (GtkAction GeditWindow *window) { gboolean visible; + GeditPanel *panel; - gedit_debug (DEBUG_COMMANDS); + gedit_debug (DEBUG_COMMANDS); visible = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); - _gedit_window_set_side_panel_visible (window, visible); + panel = gedit_window_get_side_panel (window); + + if (visible) + { + gtk_widget_show (panel); + gtk_widget_grab_focus (panel); + } + else + { + GeditTab *tab; + + gtk_widget_hide (panel); + + tab = gedit_window_get_active_tab (window); + gtk_widget_grab_focus (GTK_WIDGET (tab)); + } } void Index: gedit/gedit-session.c =================================================================== RCS file: /cvs/gnome/gedit/gedit/gedit-session.c,v retrieving revision 1.10 diff -u -p -r1.10 gedit-session.c --- gedit/gedit-session.c 12 Dec 2005 17:27:55 -0000 1.10 +++ gedit/gedit-session.c 9 Feb 2006 13:19:19 -0000 @@ -701,14 +701,14 @@ parse_window (xmlNodePtr node) (strcmp ((char *) visible, "yes") == 0)) { gedit_debug_message (DEBUG_SESSION, "Side panel visible"); - _gedit_window_set_side_panel_visible (window, - TRUE); +// _gedit_window_set_side_panel_visible (window, +// TRUE); } else { gedit_debug_message (DEBUG_SESSION, "Side panel _NOT_ visible"); - _gedit_window_set_side_panel_visible (window, - FALSE); +// _gedit_window_set_side_panel_visible (window, +// FALSE); } Index: gedit/gedit-window.c =================================================================== RCS file: /cvs/gnome/gedit/gedit/gedit-window.c,v retrieving revision 1.16 diff -u -p -r1.16 gedit-window.c --- gedit/gedit-window.c 1 Feb 2006 08:32:42 -0000 1.16 +++ gedit/gedit-window.c 9 Feb 2006 13:19:24 -0000 @@ -2439,12 +2439,39 @@ side_panel_size_allocate (GtkWidget } static void +sync_side_panel (GtkWidget *panel, + GeditWindow *window) +{ + gboolean visible; + GtkAction *action; + + visible = GTK_WIDGET_VISIBLE (window->priv->side_panel); + + if (gedit_prefs_manager_side_pane_visible_can_set ()) + gedit_prefs_manager_set_side_pane_visible (visible); + + action = gtk_action_group_get_action (window->priv->always_sensitive_action_group, + "ViewSidePane"); + + if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible) + gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible); +} + +/* +static void +side_panel_show (GtkWidget *panel, + GeditWindow *window) +{ + _gedit_window_set_side_panel_visible (window, FALSE); +} + +static void side_panel_hide (GtkWidget *panel, GeditWindow *window) { _gedit_window_set_side_panel_visible (window, FALSE); } - +*/ static void create_side_panel (GeditWindow *window) { @@ -2465,10 +2492,14 @@ create_side_panel (GeditWindow *window) G_CALLBACK (side_panel_size_allocate), window); - g_signal_connect (window->priv->side_panel, - "hide", - G_CALLBACK (side_panel_hide), - window); + g_signal_connect_after (window->priv->side_panel, + "show", + G_CALLBACK (sync_side_panel), + window); + g_signal_connect_after (window->priv->side_panel, + "hide", + G_CALLBACK (sync_side_panel), + window); gtk_paned_set_position (GTK_PANED (window->priv->hpaned), MAX (100, gedit_prefs_manager_get_side_panel_size ())); @@ -3013,57 +3044,6 @@ _gedit_window_set_toolbar_visible (Gedit if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible) gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible); - - recursion_guard = FALSE; -} - -void -_gedit_window_set_side_panel_visible (GeditWindow *window, - gboolean visible) -{ - GtkAction *action; - static gboolean recursion_guard = FALSE; - gboolean show = FALSE; - - gedit_debug (DEBUG_WINDOW); - - g_return_if_fail (GEDIT_IS_WINDOW (window)); - - if (recursion_guard) - return; - - recursion_guard = TRUE; - - visible = (visible != FALSE); - - if (visible && - (GTK_WIDGET_VISIBLE (window->priv->side_panel) != visible)) - { - gtk_widget_show (window->priv->side_panel); - show = TRUE; - } - else - { - gtk_widget_hide (window->priv->side_panel); - if (window->priv->active_tab) - gtk_widget_grab_focus (GTK_WIDGET ( - gedit_tab_get_view (GEDIT_TAB (window->priv->active_tab)))); - } - - if (gedit_prefs_manager_side_pane_visible_can_set ()) - gedit_prefs_manager_set_side_pane_visible (visible); - - action = gtk_action_group_get_action (window->priv->always_sensitive_action_group, - "ViewSidePane"); - - if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible) - gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible); - - if (show) - { - /* g_print ("GRAB side panel\n"); */ - gtk_widget_grab_focus (window->priv->side_panel); - } recursion_guard = FALSE; }