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>
This commit is contained in:
Sebastian Keller 2021-05-17 19:40:12 +02:00
parent 118d556991
commit eee2ccac7a

View File

@ -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,6 +690,7 @@ var WorkspaceLayout = GObject.registerClass({
workspaceBoxWidth = 0;
workspaceBoxHeight = 0;
if (transitioning)
child.opacity = stateAdjustementValue * 255;
}