From eee2ccac7a9e755e6f117a95fcebf39bacd79c11 Mon Sep 17 00:00:00 2001 From: Sebastian Keller Date: Mon, 17 May 2021 19:40:12 +0200 Subject: [PATCH] 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: --- 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 fafa368ce..7e6018fbd 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