[gnome-shell] workspacesView/workspacesDisplay: Handle smooth events
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] workspacesView/workspacesDisplay: Handle smooth events
- Date: Thu, 28 Jan 2021 15:29:49 +0000 (UTC)
commit 08ac3c775002c0b3ac2481b4dca6f37713e9718a
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Fri Jan 8 18:12:52 2021 -0300
workspacesView/workspacesDisplay: Handle smooth events
On X11, the scroll handler can receive smooth events, which should
trigger a workspace switch. Handle smooth events by checking their
scroll delta, and adjusting the direction depending on these deltas.
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1614
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1603>
js/ui/workspacesView.js | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 8fc21c40df..99a1e65973 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -771,11 +771,27 @@ class WorkspacesDisplay extends St.Widget {
if (event.is_pointer_emulated())
return Clutter.EVENT_PROPAGATE;
+ let direction = event.get_scroll_direction();
+ if (direction === Clutter.ScrollDirection.SMOOTH) {
+ const [dx, dy] = event.get_scroll_delta();
+ if (Math.abs(dx) > Math.abs(dy)) {
+ direction = dx < 0
+ ? Clutter.ScrollDirection.RIGHT
+ : Clutter.ScrollDirection.LEFT;
+ } else if (Math.abs(dy) > Math.abs(dx)) {
+ direction = dy < 0
+ ? Clutter.ScrollDirection.UP
+ : Clutter.ScrollDirection.DOWN;
+ } else {
+ return Clutter.EVENT_PROPAGATE;
+ }
+ }
+
let workspaceManager = global.workspace_manager;
const vertical = workspaceManager.layout_rows === -1;
let activeWs = workspaceManager.get_active_workspace();
let ws;
- switch (event.get_scroll_direction()) {
+ switch (direction) {
case Clutter.ScrollDirection.UP:
if (vertical)
ws = activeWs.get_neighbor(Meta.MotionDirection.UP);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]