stack: Change ordering for removal

Unparent the child widget before tearing down its
stack page. This is necessary so a11y can still access
the stack page accessible to emit change notification
when it learns that the child is removed.
This commit is contained in:
Matthias Clasen 2020-10-22 10:02:22 -04:00
parent e45dd771db
commit 1d802881eb

View File

@ -1467,16 +1467,12 @@ stack_remove (GtkStack *stack,
if (child_info == NULL) if (child_info == NULL)
return; return;
priv->children = g_list_remove (priv->children, child_info);
g_signal_handlers_disconnect_by_func (child, g_signal_handlers_disconnect_by_func (child,
stack_child_visibility_notify_cb, stack_child_visibility_notify_cb,
stack); stack);
was_visible = gtk_widget_get_visible (child); was_visible = gtk_widget_get_visible (child);
g_clear_object (&child_info->widget);
if (priv->visible_child == child_info) if (priv->visible_child == child_info)
{ {
if (in_dispose) if (in_dispose)
@ -1490,6 +1486,10 @@ stack_remove (GtkStack *stack,
gtk_widget_unparent (child); gtk_widget_unparent (child);
g_clear_object (&child_info->widget);
priv->children = g_list_remove (priv->children, child_info);
g_object_unref (child_info); g_object_unref (child_info);
if (!in_dispose && if (!in_dispose &&