From 3c1074085e1b507f597c8185d6a0e5e2a0f53c22 Mon Sep 17 00:00:00 2001 From: Alexander Mikhaylenko Date: Mon, 1 Mar 2021 22:39:48 +0500 Subject: [PATCH] swipeTracker: Clamp position when long swipes are enabled too Avoid wrapping back to the first page when swiping forward from the last page. Part-of: --- js/ui/swipeTracker.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/js/ui/swipeTracker.js b/js/ui/swipeTracker.js index a68e93b82..8f80bfb3e 100644 --- a/js/ui/swipeTracker.js +++ b/js/ui/swipeTracker.js @@ -635,6 +635,9 @@ var SwipeTracker = GObject.registerClass({ } _getBounds(pos) { + if (this.allowLongSwipes) + return [this._snapPoints[0], this._snapPoints[this._snapPoints.length - 1]]; + const closest = this._findClosestPoint(pos); let prev, next; @@ -667,11 +670,7 @@ var SwipeTracker = GObject.registerClass({ this._progress += delta / distance; this._history.append(time, delta); - const [lower, upper] = this.allowLongSwipes - ? [this._snapPoints[0], this._snapPoints[this._snapPoints.length - 1]] - : this._getBounds(this._initialProgress); - - this._progress = Math.clamp(this._progress, lower, upper); + this._progress = Math.clamp(this._progress, ...this._getBounds(this._initialProgress)); this.emit('update', this._progress); } @@ -701,9 +700,7 @@ var SwipeTracker = GObject.registerClass({ } pos = pos * Math.sign(velocity) + this._progress; - - if (!this.allowLongSwipes) - pos = Math.clamp(pos, ...this._getBounds(this._initialProgress)); + pos = Math.clamp(pos, ...this._getBounds(this._initialProgress)); const index = this._findPointForProjection(pos, velocity);