forked from AuroraMiddleware/gtk
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:
parent
e45dd771db
commit
1d802881eb
@ -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 &&
|
||||||
|
Loading…
Reference in New Issue
Block a user