summaryrefslogtreecommitdiff
path: root/gtk/gtkviewport.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkviewport.c')
-rw-r--r--gtk/gtkviewport.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c
index 088951487e..a5487ffc70 100644
--- a/gtk/gtkviewport.c
+++ b/gtk/gtkviewport.c
@@ -103,6 +103,7 @@ static void gtk_viewport_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
+static void gtk_viewport_finalize (GObject *object);
static void gtk_viewport_destroy (GtkWidget *widget);
static void gtk_viewport_realize (GtkWidget *widget);
static void gtk_viewport_unrealize (GtkWidget *widget);
@@ -374,6 +375,7 @@ gtk_viewport_class_init (GtkViewportClass *class)
gobject_class->set_property = gtk_viewport_set_property;
gobject_class->get_property = gtk_viewport_get_property;
+ gobject_class->finalize = gtk_viewport_finalize;
widget_class->destroy = gtk_viewport_destroy;
widget_class->realize = gtk_viewport_realize;
@@ -575,13 +577,22 @@ gtk_viewport_destroy (GtkWidget *widget)
viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL);
viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL);
- g_clear_object (&priv->gadget);
-
GTK_WIDGET_CLASS (gtk_viewport_parent_class)->destroy (widget);
g_clear_pointer (&priv->pixel_cache, _gtk_pixel_cache_free);
}
+static void
+gtk_viewport_finalize (GObject *object)
+{
+ GtkViewport *viewport = GTK_VIEWPORT (object);
+ GtkViewportPrivate *priv = viewport->priv;
+
+ g_clear_object (&priv->gadget);
+
+ G_OBJECT_CLASS (gtk_viewport_parent_class)->finalize (object);
+}
+
/**
* gtk_viewport_get_hadjustment:
* @viewport: a #GtkViewport.