[gnome-shell/gbsneto/40-stuff: 45/68] workspacesView/workspacesDisplay: Handle smooth events
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gbsneto/40-stuff: 45/68] workspacesView/workspacesDisplay: Handle smooth events
- Date: Wed, 20 Jan 2021 22:41:08 +0000 (UTC)
commit 31d34244b1d7054c2fa689c99a105a1a246a740c
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.
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 dc2be6c012..f0495c0992 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -870,11 +870,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 (dx > dy) {
+ direction = dx < 0
+ ? Clutter.ScrollDirection.RIGHT
+ : Clutter.ScrollDirection.LEFT;
+ } else if (dy > 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]