[gnome-shell] workspacesView: Fix PgUp/PgDown shortcut



commit fc54e0bed8dbab238394f6852d611d64b81f314e
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Apr 8 17:19:37 2021 +0200

    workspacesView: Fix PgUp/PgDown shortcut
    
    We still try to switch to the workspace above/below, which doesn't
    do anything since the layout is now horizontal.
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1798>

 js/ui/workspacesView.js | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 1af45d88d7..2c9da5c9bb 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -1144,20 +1144,36 @@ class WorkspacesDisplay extends St.Widget {
     _onKeyPressEvent(actor, event) {
         if (!this.mapped)
             return Clutter.EVENT_PROPAGATE;
-        let workspaceManager = global.workspace_manager;
-        let activeWs = workspaceManager.get_active_workspace();
-        let ws;
+
+        const { workspaceManager } = global;
+        const vertical = workspaceManager.layout_rows === -1;
+        const rtl = this.get_text_direction() === Clutter.TextDirection.RTL;
+
+        let dir;
         switch (event.get_key_symbol()) {
         case Clutter.KEY_Page_Up:
-            ws = activeWs.get_neighbor(Meta.MotionDirection.UP);
+            if (vertical)
+                dir = Meta.MotionDirection.UP;
+            else if (rtl)
+                dir = Meta.MotionDirection.RIGHT;
+            else
+                dir = Meta.MotionDirection.LEFT;
             break;
         case Clutter.KEY_Page_Down:
-            ws = activeWs.get_neighbor(Meta.MotionDirection.DOWN);
+            if (vertical)
+                dir = Meta.MotionDirection.DOWN;
+            else if (rtl)
+                dir = Meta.MotionDirection.LEFT;
+            else
+                dir = Meta.MotionDirection.RIGHT;
             break;
         default:
             return Clutter.EVENT_PROPAGATE;
         }
-        Main.wm.actionMoveWorkspace(ws);
+
+        const ws = workspaceManager.get_active_workspace().get_neighbor(dir);
+        if (ws)
+            Main.wm.actionMoveWorkspace(ws);
         return Clutter.EVENT_STOP;
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]