forked from AuroraMiddleware/gtk
Fix set_focus_child handling during focus changes
In many cases we used to set focus_child to NULL all the way up to the top and then to the right value, even if there was a common ancestor, meaning these see a temporary NULL value for focus_child. Only when the new focus widgets direct parent was in the previous ancestor list did we stop early. This fixes that by always stopping propagation when reaching the common ancestor.
This commit is contained in:
parent
064204da9b
commit
10b5ec20f2
@ -6468,10 +6468,15 @@ gtk_widget_real_grab_focus (GtkWidget *focus_widget)
|
||||
|
||||
if (widget)
|
||||
{
|
||||
while (widget->priv->parent && widget->priv->parent != focus_widget->priv->parent)
|
||||
GtkWidget *common_ancestor = gtk_widget_common_ancestor (widget, focus_widget);
|
||||
|
||||
if (widget != common_ancestor)
|
||||
{
|
||||
widget = widget->priv->parent;
|
||||
gtk_container_set_focus_child (GTK_CONTAINER (widget), NULL);
|
||||
while (widget->priv->parent && widget->priv->parent != common_ancestor)
|
||||
{
|
||||
widget = widget->priv->parent;
|
||||
gtk_container_set_focus_child (GTK_CONTAINER (widget), NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user