summaryrefslogtreecommitdiff
path: root/gtk/gtknotebook.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2007-12-04 18:43:47 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-12-04 18:43:47 +0000
commit2b3c7b70ef07f16aba4b920b6b264362e92b790a (patch)
treeb5d4ea9beff58da959c7d707c39180c1e8cf711a /gtk/gtknotebook.c
parentf411b93ca3bdef184e4453cab587a31adc44fa09 (diff)
downloadgtk+-2b3c7b70ef07f16aba4b920b6b264362e92b790a.tar.gz
Modify the tab-label-destroy fix to not crash epiphany.
2007-12-04 Matthias Clasen <mclasen@redhat.com> * gtk/gtknotebook.c: Modify the tab-label-destroy fix to not crash epiphany. svn path=/trunk/; revision=19107
Diffstat (limited to 'gtk/gtknotebook.c')
-rw-r--r--gtk/gtknotebook.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c
index 445ed95000..55acbf5b99 100644
--- a/gtk/gtknotebook.c
+++ b/gtk/gtknotebook.c
@@ -1455,7 +1455,6 @@ gtk_notebook_destroy (GtkObject *object)
{
GtkNotebook *notebook = GTK_NOTEBOOK (object);
GtkNotebookPrivate *priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
- GList *l;
if (notebook->menu)
gtk_notebook_popup_disable (notebook);
@@ -1472,23 +1471,6 @@ gtk_notebook_destroy (GtkObject *object)
priv->switch_tab_timer = 0;
}
- for (l = notebook->children; l; l = l->next)
- {
- GtkNotebookPage *page = l->data;
- GtkWidget *w = page->tab_label;
- if (w) {
- g_object_ref (w);
- gtk_notebook_remove_tab_label (notebook, page);
- gtk_widget_destroy (w);
- g_object_unref (w);
- }
- }
- /*
- * Prevent gtk_notebook_update_labels from doing work. (And from crashing
- * since we have NULL tab_labels all over.
- */
- notebook->show_tabs = FALSE;
-
GTK_OBJECT_CLASS (gtk_notebook_parent_class)->destroy (object);
}
@@ -4331,6 +4313,7 @@ gtk_notebook_real_remove (GtkNotebook *notebook,
GtkNotebookPage *page;
GList * next_list;
gint need_resize = FALSE;
+ GtkWidget *tab_label;
gboolean destroying;
@@ -4365,7 +4348,12 @@ gtk_notebook_real_remove (GtkNotebook *notebook,
gtk_widget_unparent (page->child);
+ tab_label = page->tab_label;
+ g_object_ref (tab_label);
gtk_notebook_remove_tab_label (notebook, page);
+ if (destroying)
+ gtk_widget_destroy (tab_label);
+ g_object_unref (tab_label);
if (notebook->menu)
{