GtkStackSwitcher: Don't emit notify::visible-child when setting a stack

Synchronizing the visible child with the switcher's toggle buttons can
lead to GtkButton::clicked being emitted twice. Once for the button
that was active before, and once for the button that we just activated.
This leads to notify::visible-child being called twice and one of
them is with the wrong child.

Let's deal with this in the same way we handle the visible child
changing underneath us.

https://bugzilla.gnome.org/show_bug.cgi?id=749021
This commit is contained in:
Debarshi Ray
2015-05-06 16:53:43 +02:00
parent 6a51ac59f0
commit 26b03332a4

View File

@ -300,7 +300,9 @@ populate_switcher (GtkStackSwitcher *self)
if (widget)
{
button = g_hash_table_lookup (priv->buttons, widget);
priv->in_child_changed = TRUE;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
priv->in_child_changed = FALSE;
}
}