[gnome-shell/wip/exalm/gestures-part-2: 1/2] appDisplay: Add timeout for mouse scrolling
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/exalm/gestures-part-2: 1/2] appDisplay: Add timeout for mouse scrolling
- Date: Wed, 8 Jan 2020 22:44:37 +0000 (UTC)
commit 08ebfa1acfd1261bb44853f0d8a94dfa58e76c28
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Wed Oct 16 12:30:14 2019 +0500
appDisplay: 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/appDisplay.js | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 05d0ab3a4a..0156877e8f 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -376,6 +376,9 @@ var AllView = GObject.registerClass({
this._displayingPopup = false;
this._currentPopupDestroyId = 0;
+ this._canScroll = true; // limiting scrolling speed
+ this._scrollTimeoutId = 0;
+
this._availWidth = 0;
this._availHeight = 0;
@@ -406,6 +409,15 @@ var AllView = GObject.registerClass({
Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this));
Main.overview.connect('item-drag-end', this._onDragEnd.bind(this));
+
+ this.connect('destroy', this._onDestroy.bind(this));
+ }
+
+ _onDestroy() {
+ if (this._scrollTimeoutId !== 0) {
+ GLib.source_remove(this._scrollTimeoutId);
+ this._scrollTimeoutId = 0;
+ }
}
vfunc_map() {
@@ -638,11 +650,25 @@ var AllView = GObject.registerClass({
if (this._displayingPopup || !this._scrollView.reactive)
return Clutter.EVENT_STOP;
+ if (!this._canScroll)
+ return Clutter.EVENT_STOP;
+
let direction = event.get_scroll_direction();
if (direction == Clutter.ScrollDirection.UP)
this.goToPage(this._grid.currentPage - 1);
else if (direction == Clutter.ScrollDirection.DOWN)
this.goToPage(this._grid.currentPage + 1);
+ else
+ return Clutter.EVENT_STOP;
+
+ this._canScroll = false;
+ this._scrollTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
+ PAGE_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]