After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 786546 - Improve workspace keyboard navigation
Improve workspace keyboard navigation
Status: RESOLVED FIXED
Product: gnome-shell
Classification: Core
Component: general
unspecified
Other All
: Normal normal
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
Depends on:
Blocks:
 
 
Reported: 2017-08-20 16:03 UTC by Florian Müllner
Modified: 2017-10-04 16:28 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
workspace: Fix tab navigation order (2.21 KB, patch)
2017-08-20 16:03 UTC, Florian Müllner
committed Details | Review
workspace: Focus clone when highlighting (1011 bytes, patch)
2017-08-20 16:03 UTC, Florian Müllner
committed Details | Review

Description Florian Müllner 2017-08-20 16:03:11 UTC
See patches.
Comment 1 Florian Müllner 2017-08-20 16:03:16 UTC
Created attachment 358020 [details] [review]
workspace: Fix tab navigation order

By default the focus chain uses the same order as the list returned
by clutter_actor_get_children(), which corresponds to the z-order.
This doesn't work well in the window picker, where clones follow
the stacking of windows to ensure a correct overview transition,
but previews are laid out purely based on space efficiency. As
a result, the order in which window previews are navigated when
tabbing around is essentially random. Fix this by providing a
focus chain implementation that is based on the visual layout
of the previews rather than the stacking.
Comment 2 Florian Müllner 2017-08-20 16:03:23 UTC
Created attachment 358021 [details] [review]
workspace: Focus clone when highlighting

We don't use different hover- and focus indications for window previews,
so using keyboard navigation after hovering a clone often has surprising
results when the previous focus window wasn't the selected one. Address
this by simply moving the keyboard focus with the highlight.
Comment 3 Rui Matos 2017-10-04 14:12:47 UTC
Review of attachment 358020 [details] [review]:

ok looks fine

::: js/ui/workspace.js
@@ +1074,3 @@
+            let cloneB = (b._delegate && b._delegate instanceof WindowClone) ? b._delegate: null;
+            if (cloneA && cloneB)
+                return cloneA.slotId - cloneB.slotId;

can't happen with the way the code is right now but slotId should probably be initialized in WindowClone to be safe
Comment 4 Rui Matos 2017-10-04 14:15:43 UTC
Review of attachment 358021 [details] [review]:

ok
Comment 5 Florian Müllner 2017-10-04 16:27:55 UTC
Attachment 358020 [details] pushed as 8143f73 - workspace: Fix tab navigation order
Attachment 358021 [details] pushed as 1939e22 - workspace: Focus clone when highlighting