summaryrefslogtreecommitdiff
path: root/gtk/gtkwidgetpaintable.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2019-03-27 03:41:03 +0100
committerBenjamin Otte <otte@redhat.com>2019-03-29 09:56:52 +0100
commit5dd5ff52366b132846300aca2fd8cfc7b742024b (patch)
treed54206d7029d3df89b248dd4ac06f05fc0c8f9f4 /gtk/gtkwidgetpaintable.c
parentd3be32f8ea5b56af3b89d4ffadfbb8dff7a42254 (diff)
downloadgtk+-5dd5ff52366b132846300aca2fd8cfc7b742024b.tar.gz
widgetpaintable: Don't emit signals on dispose
Diffstat (limited to 'gtk/gtkwidgetpaintable.c')
-rw-r--r--gtk/gtkwidgetpaintable.c20
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.