[Xfce4-commits] <midori:master> Remove the according action when destroying panels

Christian Dywan noreply at xfce.org
Thu Jul 21 18:20:02 CEST 2011


Updating branch refs/heads/master
         to bfc6a034abf1bb43d6ff187396509bb121a2b86c (commit)
       from cf4499f54bd8c0df4963bd53bced1421f92162d8 (commit)

commit bfc6a034abf1bb43d6ff187396509bb121a2b86c
Author: Christian Dywan <christian at twotoasts.de>
Date:   Thu Jul 21 18:18:58 2011 +0200

    Remove the according action when destroying panels
    
    Fixes: https://bugs.launchpad.net/midori/+bug/699982

 midori/midori-panel.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/midori/midori-panel.c b/midori/midori-panel.c
index 1e73c07..a7abc81 100644
--- a/midori/midori-panel.c
+++ b/midori/midori-panel.c
@@ -588,12 +588,29 @@ static void
 midori_panel_viewable_destroy_cb (GtkWidget*   viewable,
                                   MidoriPanel* panel)
 {
-    gint i = gtk_notebook_page_num (GTK_NOTEBOOK (panel->notebook),
+    gint n_pages;
+    gchar* action_name;
+    GtkAction* action;
+    gint i;
+
+    i = gtk_notebook_page_num (GTK_NOTEBOOK (panel->notebook),
                 g_object_get_data (G_OBJECT (viewable), "parent"));
     if (i > -1)
         gtk_notebook_remove_page (GTK_NOTEBOOK (panel->notebook), i);
     g_signal_handlers_disconnect_by_func (
         viewable, midori_panel_viewable_destroy_cb, panel);
+
+    n_pages = midori_panel_get_n_pages (panel);
+    if (n_pages > 0)
+        midori_panel_set_current_page (panel, (n_pages-1 > i) ? i : n_pages - 1);
+
+    action_name = g_strconcat ("PanelPage",
+        midori_viewable_get_stock_id (MIDORI_VIEWABLE (viewable)), NULL);
+    action = gtk_action_group_get_action (panel->action_group, action_name);
+    g_free (action_name);
+
+    gtk_action_group_remove_action (panel->action_group, action);
+    g_object_unref (G_OBJECT (action));
 }
 
 static GtkToolItem*



More information about the Xfce4-commits mailing list