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.
This commit is contained in:
Matthias Clasen 2020-05-13 17:10:36 -04:00
parent 8e6ec0b8a3
commit 10be40a8b1

View File

@ -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);
}