From fc54e0bed8dbab238394f6852d611d64b81f314e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 8 Apr 2021 17:19:37 +0200
Subject: [PATCH 1/2] 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 1af45d88d..2c9da5c9b 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;
}
--
2.31.1