[gnome-shell] workspacesView: Don't invalidate allocation before using it for gesture



commit 8d5fb73695682b99c2a1c6db361474984e2196ac
Author: Sebastian Keller <skeller gnome org>
Date:   Tue Feb 16 03:50:52 2021 +0100

    workspacesView: Don't invalidate allocation before using it for gesture
    
    Calling startTouchGesture() on the workspacesViews can change the
    visibility of the workspaces if not all of them are already shown, such
    as when there are more than 3 workspaces or for 3 workspaces if we are
    not on the central one. This invalidates the allocation and the width
    used as distance for the gesture would become 0, resulting in drag
    gestures immediately jumping to the first or last workspace due to a
    division by 0.
    
    Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3721
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1682>

 js/ui/workspacesView.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 0cfe91561b..177fd413d9 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -716,12 +716,12 @@ class WorkspacesDisplay extends St.Widget {
             ? Clutter.Orientation.HORIZONTAL
             : Clutter.Orientation.VERTICAL;
 
+        const distance = global.workspace_manager.layout_rows === -1
+            ? this.height : this.width;
+
         for (let i = 0; i < this._workspacesViews.length; i++)
             this._workspacesViews[i].startTouchGesture();
 
-        let distance = global.workspace_manager.layout_rows === -1
-            ? this.height : this.width;
-
         let progress = adjustment.value / adjustment.page_size;
         let points = Array.from(
             { length: workspaceManager.n_workspaces }, (v, i) => i);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]