From: Timm Bäder Date: Thu, 11 May 2017 13:33:13 +0000 (+0200) Subject: listbox: Manually unparent placeholder in dispose X-Git-Tag: archive/raspbian/3.24.39-1+rpi1~1^2~65^2~39^2~553 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=73179d377145c5ab6bbf8a84d03f752b3359e7d9;p=gtk%2B3.0.git listbox: Manually unparent placeholder in dispose We can't make the placeholder a non-internal child as that breaks applications that previously relied on foreach() to only return GtkListBoxRow instances. Instead, unparent the placeholder manually in dispose. https://bugzilla.gnome.org/show_bug.cgi?id=782494 --- diff --git a/gtk/gtklistbox.c b/gtk/gtklistbox.c index f16e02aff8..702e3424cc 100644 --- a/gtk/gtklistbox.c +++ b/gtk/gtklistbox.c @@ -408,6 +408,20 @@ gtk_list_box_finalize (GObject *obj) G_OBJECT_CLASS (gtk_list_box_parent_class)->finalize (obj); } +static void +gtk_list_box_dispose (GObject *object) +{ + GtkListBoxPrivate *priv = BOX_PRIV (object); + + if (priv->placeholder) + { + gtk_widget_unparent (priv->placeholder); + priv->placeholder = NULL; + } + + G_OBJECT_CLASS (gtk_list_box_parent_class)->dispose (object); +} + static void gtk_list_box_class_init (GtkListBoxClass *klass) { @@ -421,6 +435,7 @@ gtk_list_box_class_init (GtkListBoxClass *klass) object_class->get_property = gtk_list_box_get_property; object_class->set_property = gtk_list_box_set_property; object_class->finalize = gtk_list_box_finalize; + object_class->dispose = gtk_list_box_dispose; widget_class->enter_notify_event = gtk_list_box_enter_notify_event; widget_class->leave_notify_event = gtk_list_box_leave_notify_event; widget_class->motion_notify_event = gtk_list_box_motion_notify_event;