[epiphany-extensions/tabs-reloaded: 5/9] [tabs-reloaded] Properly destroy embeds that get removed
- From: Benjamin Otte <otte src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [epiphany-extensions/tabs-reloaded: 5/9] [tabs-reloaded] Properly destroy embeds that get removed
- Date: Wed, 5 Aug 2009 16:10:50 +0000 (UTC)
commit 6348651631f69766d18fe12869b7aae1823288f6
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]