[gnome-shell] workspacesView: Derive workspace state from fit mode



commit 1adcbaab46c879228ad8b34392b82f317d15cfde
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri Jan 1 13:10:19 2021 -0300

    workspacesView: Derive workspace state from fit mode
    
    Derive the workspace state WorkspacesView's workspaces from the fit mode.
    Extra workspaces still run the zoom animations as before.
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1613>

 js/ui/workspace.js      | 4 ++++
 js/ui/workspacesView.js | 7 ++++---
 2 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index 38218fc9bd..b37a7e39e2 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -1341,4 +1341,8 @@ class Workspace extends St.Widget {
 
         return false;
     }
+
+    get stateAdjustment() {
+        return this.layout_manager.stateAdjustment;
+    }
 });
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index ab8c78c5f6..7f8fb04dea 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -217,9 +217,12 @@ class WorkspacesView extends WorkspacesViewBase {
 
     _updateWorkspacesState() {
         const adj = this._scrollAdjustment;
+        const fitMode = this._fitModeAdjustment.value;
 
         // Fade and scale inactive workspaces
         this._workspaces.forEach((w, index) => {
+            w.stateAdjustment.value = Util.lerp(1, 0, fitMode);
+
             const distanceToCurrentWorkspace = Math.abs(adj.value - index);
 
             const progress = 1 - Math.clamp(distanceToCurrentWorkspace, 0, 1);
@@ -290,14 +293,12 @@ class WorkspacesView extends WorkspacesViewBase {
     }
 
     animateToOverview() {
-        for (let w = 0; w < this._workspaces.length; w++)
-            this._workspaces[w].zoomToOverview();
         this._updateVisibility();
     }
 
     animateFromOverview() {
         for (let w = 0; w < this._workspaces.length; w++)
-            this._workspaces[w].zoomFromOverview();
+            this._workspaces[w].prepareToLeaveOverview();
     }
 
     syncStacking(stackIndices) {


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