diff options
author | Benjamin Otte <otte@redhat.com> | 2019-03-27 03:41:03 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2019-03-29 09:56:52 +0100 |
commit | 5dd5ff52366b132846300aca2fd8cfc7b742024b (patch) | |
tree | d54206d7029d3df89b248dd4ac06f05fc0c8f9f4 /gtk/gtkwidgetpaintable.c | |
parent | d3be32f8ea5b56af3b89d4ffadfbb8dff7a42254 (diff) | |
download | gtk+-5dd5ff52366b132846300aca2fd8cfc7b742024b.tar.gz |
widgetpaintable: Don't emit signals on dispose
Diffstat (limited to 'gtk/gtkwidgetpaintable.c')
-rw-r--r-- | gtk/gtkwidgetpaintable.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/gtk/gtkwidgetpaintable.c b/gtk/gtkwidgetpaintable.c index f1da13fed2..6b60c7ad28 100644 --- a/gtk/gtkwidgetpaintable.c +++ b/gtk/gtkwidgetpaintable.c @@ -191,11 +191,23 @@ gtk_widget_paintable_get_property (GObject *object, } static void +gtk_widget_paintable_unset_widget (GtkWidgetPaintable *self) +{ + if (self->widget == NULL) + return; + + self->widget->priv->paintables = g_slist_remove (self->widget->priv->paintables, + self); + + self->widget = NULL; +} + +static void gtk_widget_paintable_dispose (GObject *object) { GtkWidgetPaintable *self = GTK_WIDGET_PAINTABLE (object); - gtk_widget_paintable_set_widget (self, NULL); + gtk_widget_paintable_unset_widget (self); G_OBJECT_CLASS (gtk_widget_paintable_parent_class)->dispose (object); } @@ -311,11 +323,7 @@ gtk_widget_paintable_set_widget (GtkWidgetPaintable *self, if (self->widget == widget) return; - if (self->widget) - { - self->widget->priv->paintables = g_slist_remove (self->widget->priv->paintables, - self); - } + gtk_widget_paintable_unset_widget (self); /* We do not ref the widget to not cause ref cycles when a widget * is told to observe itself or one of its parent. |