diff options
author | Matthias Clasen <mclasen@redhat.com> | 2007-12-04 18:43:47 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2007-12-04 18:43:47 +0000 |
commit | 2b3c7b70ef07f16aba4b920b6b264362e92b790a (patch) | |
tree | b5d4ea9beff58da959c7d707c39180c1e8cf711a /gtk/gtknotebook.c | |
parent | f411b93ca3bdef184e4453cab587a31adc44fa09 (diff) | |
download | gtk+-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.c | 24 |
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) { |