[epiphany-extensions/tabs-reloaded: 4/16] [tabs-reloaded] Properly destroy embeds that get removed



commit 797b04fc46945e7651e6cf108137504793001748
Author: Benjamin Otte <otte gnome org>
Date:   Wed Aug 5 14:36:36 2009 +0200

    [tabs-reloaded] Properly destroy embeds that get removed

 extensions/tabs-reloaded/ephy-tabs-manager.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/extensions/tabs-reloaded/ephy-tabs-manager.c b/extensions/tabs-reloaded/ephy-tabs-manager.c
index 0c12f3e..be5a80c 100644
--- a/extensions/tabs-reloaded/ephy-tabs-manager.c
+++ b/extensions/tabs-reloaded/ephy-tabs-manager.c
@@ -28,6 +28,8 @@ G_DEFINE_DYNAMIC_TYPE (EphyTabsManager, ephy_tabs_manager, GTK_TYPE_TREE_STORE)
 static void
 ephy_tabs_manager_detach (EphyTabsManager *manager)
 {
+  GtkTreeIter iter;
+
   if (manager->notebook == NULL)
     return;
 
@@ -39,7 +41,11 @@ ephy_tabs_manager_detach (EphyTabsManager *manager)
                                         NULL,
                                         manager);
 
-  gtk_tree_store_clear (GTK_TREE_STORE (manager));
+  while (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (manager), &iter))
+    {
+      EphyEmbed *embed = ephy_tabs_manager_get_tab (manager, &iter);
+      ephy_tabs_manager_remove_tab (manager, embed);
+    }
 
   g_object_unref (manager->notebook);
   manager->notebook = NULL;
@@ -162,6 +168,10 @@ ephy_tabs_manager_remove_tab (EphyTabsManager *manager,
       g_assert_not_reached ();
     }
 
+  g_signal_handlers_disconnect_by_func (ephy_embed_get_web_view (embed),
+                                        ephy_tabs_manager_view_changed,
+                                        manager);
+
   gtk_tree_store_remove (GTK_TREE_STORE (manager), &iter);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]