From 9f4cea190ac245f69e5d191281b8e0dfb0c2f9e1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 5 May 2020 16:49:08 -0400 Subject: [PATCH] viewport: Use dispose instead of destroy The destroy vfunc is going away. --- gtk/gtkviewport.c | 57 ++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c index 1cbd46aa65..c85f7a5142 100644 --- a/gtk/gtkviewport.c +++ b/gtk/gtkviewport.c @@ -110,7 +110,7 @@ static void gtk_viewport_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void gtk_viewport_destroy (GtkWidget *widget); +static void gtk_viewport_dispose (GObject *object); static void gtk_viewport_size_allocate (GtkWidget *widget, int width, int height, @@ -289,11 +289,34 @@ gtk_viewport_get_request_mode (GtkWidget *widget) return GTK_SIZE_REQUEST_CONSTANT_SIZE; } +#define ADJUSTMENT_POINTER(orientation) \ + (((orientation) == GTK_ORIENTATION_HORIZONTAL) ? \ + &viewport->hadjustment : &viewport->vadjustment) + +static void +viewport_disconnect_adjustment (GtkViewport *viewport, + GtkOrientation orientation) +{ + GtkAdjustment **adjustmentp = ADJUSTMENT_POINTER (orientation); + + if (*adjustmentp) + { + g_signal_handlers_disconnect_by_func (*adjustmentp, + gtk_viewport_adjustment_value_changed, + viewport); + g_object_unref (*adjustmentp); + *adjustmentp = NULL; + } +} + static void gtk_viewport_dispose (GObject *object) { GtkViewport *viewport = GTK_VIEWPORT (object); + viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL); + viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL); + clear_focus_change_handler (viewport); g_clear_pointer (&viewport->child, gtk_widget_unparent); @@ -337,7 +360,6 @@ gtk_viewport_class_init (GtkViewportClass *class) gobject_class->set_property = gtk_viewport_set_property; gobject_class->get_property = gtk_viewport_get_property; - widget_class->destroy = gtk_viewport_destroy; widget_class->size_allocate = gtk_viewport_size_allocate; widget_class->measure = gtk_viewport_measure; widget_class->root = gtk_viewport_root; @@ -495,37 +517,6 @@ gtk_viewport_new (GtkAdjustment *hadjustment, return viewport; } -#define ADJUSTMENT_POINTER(orientation) \ - (((orientation) == GTK_ORIENTATION_HORIZONTAL) ? \ - &viewport->hadjustment : &viewport->vadjustment) - -static void -viewport_disconnect_adjustment (GtkViewport *viewport, - GtkOrientation orientation) -{ - GtkAdjustment **adjustmentp = ADJUSTMENT_POINTER (orientation); - - if (*adjustmentp) - { - g_signal_handlers_disconnect_by_func (*adjustmentp, - gtk_viewport_adjustment_value_changed, - viewport); - g_object_unref (*adjustmentp); - *adjustmentp = NULL; - } -} - -static void -gtk_viewport_destroy (GtkWidget *widget) -{ - GtkViewport *viewport = GTK_VIEWPORT (widget); - - viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL); - viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL); - - GTK_WIDGET_CLASS (gtk_viewport_parent_class)->destroy (widget); -} - static void viewport_set_adjustment (GtkViewport *viewport, GtkOrientation orientation,