diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 47f1c69f2..b849771a6 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -991,6 +991,16 @@ class Workspace extends St.Widget { }); this._overviewAdjustment = overviewAdjustment; + this._overviewStateId = overviewAdjustment.connect('notify::value', () => { + const overviewState = overviewAdjustment.value; + + // We want windows not to spill out when the overview is in + // APP_GRID state, but HIDDEN and WINDOW_PICKER should allow + // them to eventually draw outside the workspace. + this._container.clip_to_allocation = + overviewState > OverviewControls.ControlsState.WINDOW_PICKER; + }); + this.monitorIndex = monitorIndex; this._monitor = Main.layoutManager.monitors[this.monitorIndex]; @@ -1241,6 +1251,11 @@ class Workspace extends St.Widget { this._layoutFrozenId = 0; } + if (this._overviewStateId > 0) { + this._overviewAdjustment.disconnect(this._overviewStateId); + delete this._overviewStateId; + } + this._windows = []; }