From 10be40a8b1c6028e209eed24b666a50361103dee Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 May 2020 17:10:36 -0400 Subject: [PATCH] scrolledwindow: Fix swapping out child This was not working in the case that the existing child is not a scrollable. It showed up as crashes of the scrolling benchmark in gtk4-demo when switching examples. --- gtk/gtkscrolledwindow.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index f2b8493234..f1b23d87eb 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -4166,20 +4166,16 @@ gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window, if (priv->child) { - if (!priv->auto_added_viewport) + if (priv->auto_added_viewport) { - scrollable_child = priv->child; - } - else - { - scrollable_child = gtk_viewport_get_child (GTK_VIEWPORT (priv->child)); gtk_viewport_set_child (GTK_VIEWPORT (priv->child), NULL); } - g_object_set (scrollable_child, + g_object_set (priv->child, "hadjustment", NULL, "vadjustment", NULL, NULL); + g_clear_pointer (&priv->child, gtk_widget_unparent); }