shell/stack: Ignore hidden children for focus navigation

ShellStack implements custom focus navigation, and will only ever
navigate into its top-most child. That kind of makes sense as long
as that child is actually visible, but not when it is hidden.

Descend into the stack to look for a focusable child instead.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2210
This commit is contained in:
Florian Müllner 2020-02-19 17:30:15 +01:00 committed by Florian Müllner
parent 3848513cf4
commit 120b907c33

View File

@ -170,6 +170,8 @@ shell_stack_navigate_focus (StWidget *widget,
} }
top_actor = clutter_actor_get_last_child (CLUTTER_ACTOR (widget)); top_actor = clutter_actor_get_last_child (CLUTTER_ACTOR (widget));
while (top_actor && !clutter_actor_is_visible (top_actor))
top_actor = clutter_actor_get_previous_sibling (top_actor);
if (ST_IS_WIDGET (top_actor)) if (ST_IS_WIDGET (top_actor))
return st_widget_navigate_focus (ST_WIDGET (top_actor), from, direction, FALSE); return st_widget_navigate_focus (ST_WIDGET (top_actor), from, direction, FALSE);
else else