[gnome-shell] workspace: Only change opacity of minimized windows during transitions



commit eee2ccac7a9e755e6f117a95fcebf39bacd79c11
Author: Sebastian Keller <skeller gnome org>
Date:   Mon May 17 19:40:12 2021 +0200

    workspace: Only change opacity of minimized windows during transitions
    
    Dragging a window preview in the overview is supposed to change the
    opacity of the dragged actor. This however fails for minimized windows,
    because Workspace::allocate() also changes the opacity of those. The
    allocation gets triggered by removing the window actor from the
    workspace when starting the drag. Avoid this by only changing the
    opacity during the overview transitions.
    
    Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4292
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1847>

 js/ui/workspace.js | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index fafa368ce7..7e6018fbd3 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -627,8 +627,9 @@ var WorkspaceLayout = GObject.registerClass({
         }
 
         const { ControlsState } = OverviewControls;
-        const inSessionTransition =
-            this._overviewAdjustment.value <= ControlsState.WINDOW_PICKER;
+        const { currentState, transitioning } =
+            this._overviewAdjustment.getStateTransitionParams();
+        const inSessionTransition = currentState <= ControlsState.WINDOW_PICKER;
 
         const window = this._sortedWindows[0];
 
@@ -638,8 +639,8 @@ var WorkspaceLayout = GObject.registerClass({
             const [, bottomOversize] = window.chromeHeights();
             const [containerX, containerY] = containerBox.get_origin();
 
-            const extraHeightProgress = this._overviewAdjustment.value -
-                OverviewControls.ControlsState.WINDOW_PICKER;
+            const extraHeightProgress =
+                currentState - OverviewControls.ControlsState.WINDOW_PICKER;
 
             const extraClipHeight = bottomOversize * (1 - extraHeightProgress);
 
@@ -689,7 +690,8 @@ var WorkspaceLayout = GObject.registerClass({
                 workspaceBoxWidth = 0;
                 workspaceBoxHeight = 0;
 
-                child.opacity = stateAdjustementValue * 255;
+                if (transitioning)
+                    child.opacity = stateAdjustementValue * 255;
             }
 
             // Don't allow the scaled floating size to drop below


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