[gnome-shell/gnome-3-34] appDisplay: Add threshold after overshoot page switches
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gnome-3-34] appDisplay: Add threshold after overshoot page switches
- Date: Sun, 24 Nov 2019 19:22:12 +0000 (UTC)
commit 48477443fa6cb76523e2d3c675951dc7d523fa39
Author: Florian Müllner <fmuellner gnome org>
Date: Sat Nov 23 15:06:14 2019 +0100
appDisplay: Add threshold after overshoot page switches
We currently always switch app pages when a dragged app icon
moves outside the grid boundaries, regardless of any previous
page switches. This makes it too easy to switch multiple pages
accidentally, so add a small threshold that the icon has to
move back towards the grid before allowing another page switch.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1693
js/ui/appDisplay.js | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 5a5b90e7d4..15faf04a80 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -40,6 +40,8 @@ var PAGE_SWITCH_TIME = 300;
var APP_ICON_SCALE_IN_TIME = 500;
var APP_ICON_SCALE_IN_DELAY = 700;
+const OVERSHOOT_THRESHOLD = 20;
+
const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl';
const SWITCHEROO_OBJECT_PATH = '/net/hadess/SwitcherooControl';
@@ -351,6 +353,8 @@ var AllView = class AllView extends BaseAppView {
this._availWidth = 0;
this._availHeight = 0;
+ this._lastOvershootY = -1;
+
Main.overview.connect('hidden', () => this.goToPage(0));
this._grid.connect('space-opened', () => {
let fadeEffect = this._scrollView.get_effect('fade');
@@ -748,12 +752,24 @@ var AllView = class AllView extends BaseAppView {
let [, gridHeight] = this.actor.get_transformed_size();
let gridBottom = gridY + gridHeight;
- // Within the grid boundaries, or already animating
- if (dragEvent.y > gridY && dragEvent.y < gridBottom ||
- this._adjustment.get_transition('value') != null) {
+ // Already animating
+ if (this._adjustment.get_transition('value') !== null)
+ return;
+
+ // Within the grid boundaries
+ if (dragEvent.y > gridY && dragEvent.y < gridBottom) {
+ // Check whether we moved out the area of the last switch
+ if (Math.abs(this._lastOvershootY - dragEvent.y) > OVERSHOOT_THRESHOLD)
+ this._lastOvershootY = -1;
return;
}
+ // Still in the area of the previous page switch
+ if (this._lastOvershootY >= 0)
+ return;
+
+ this._lastOvershootY = dragEvent.y;
+
// Moving above the grid
let currentY = this._adjustment.value;
if (dragEvent.y <= gridY && currentY > 0) {
@@ -799,6 +815,7 @@ var AllView = class AllView extends BaseAppView {
}
this._eventBlocker.visible = this._currentPopup !== null;
+ this._lastOvershootY = -1;
}
_canAccept(source) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]