From eeb9de80e17d1915d877c98eabd9a9a1f4423e9c Mon Sep 17 00:00:00 2001 From: Xan Lopez Date: Fri, 30 Dec 2011 21:09:21 +0100 Subject: [PATCH] GtkNotebook: fix crash when DnD tabs between windows When doing DnD between windows the tab label is set as the child of the DnD info window. If this is happening the remove method of GtkNotebook should not unparent the tab label, since it's been already unparented, belongs to the DnD window and will be properly destroyed when the DnD is over. https://bugzilla.gnome.org/show_bug.cgi?id=639875 --- gtk/gtknotebook.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index 32cdee71ee..231893f74c 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -4958,7 +4958,10 @@ gtk_notebook_real_remove (GtkNotebook *notebook, gtk_widget_unparent (page->child); tab_label = page->tab_label; - if (tab_label) + /* Do not unparent the tab label if it's already in another + hierarchy. It means we are in the middle of a DnD and it's + already taken care of. */ + if (tab_label && NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)) { g_object_ref (tab_label); gtk_notebook_remove_tab_label (notebook, page);