[gnome-shell/wip/exalm/gestures-part-2: 115/115] workspacesView: Add timeout for mouse scrolling
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/exalm/gestures-part-2: 115/115] workspacesView: Add timeout for mouse scrolling
- Date: Wed, 8 Jan 2020 22:27:43 +0000 (UTC)
commit 55e3199485851d9982e703bb004c1c3d32f9c974
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Wed Oct 16 10:39:48 2019 +0500
workspacesView: Add timeout for mouse scrolling
Prevent uncontrollably fast scrolling. Use the same duration as switching
animation, but add a separate timeout to account for disabled animations.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1338
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/825
js/ui/workspacesView.js | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 8660cacdda..0daa9bd30a 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported WorkspacesView, WorkspacesDisplay */
-const { Clutter, Gio, GObject, Meta, Shell, St } = imports.gi;
+const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Main = imports.ui.main;
const WindowManager = imports.ui.windowManager;
@@ -487,11 +487,13 @@ class WorkspacesDisplay extends St.Widget {
this._restackedNotifyId = 0;
this._scrollEventId = 0;
this._keyPressEventId = 0;
+ this._scrollTimeoutId = 0;
this._fullGeometry = null;
this._scrolling = false; // swipe-scrolling
this._gestureActive = false; // touch(pad) gestures
+ this._canScroll = true; // limiting scrolling speed
this.connect('destroy', this._onDestroy.bind(this));
}
@@ -509,6 +511,11 @@ class WorkspacesDisplay extends St.Widget {
this._parentSetLater = 0;
}
+ if (this._scrollTimeoutId != 0) {
+ GLib.source_remove(this._scrollTimeoutId);
+ this._scrollTimeoutId = 0;
+ }
+
global.window_manager.disconnect(this._switchWorkspaceId);
global.workspace_manager.disconnect(this._reorderWorkspacesdId);
}
@@ -793,6 +800,9 @@ class WorkspacesDisplay extends St.Widget {
this._getMonitorIndexForEvent(event) != this._primaryIndex)
return Clutter.EVENT_PROPAGATE;
+ if (!this._canScroll)
+ return Clutter.EVENT_PROPAGATE;
+
let workspaceManager = global.workspace_manager;
let activeWs = workspaceManager.get_active_workspace();
let ws;
@@ -813,6 +823,16 @@ class WorkspacesDisplay extends St.Widget {
return Clutter.EVENT_PROPAGATE;
}
Main.wm.actionMoveWorkspace(ws);
+
+ this._canScroll = false;
+ this._scrollTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
+ WORKSPACE_SWITCH_TIME, () => {
+ this._canScroll = true;
+ this._scrollTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
+ }
+ );
+
return Clutter.EVENT_STOP;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]