workspace: Clip window previews
Window previews can spill out of the container when their position in the session overflows the monitor boundaries. In the past, Workspace didn't have a visible background, and was (almost) always fullscreen, which would mask this particular problem. However, nowadays, it is very much noticeable when this situation happens. Clip the window previews container to its allocation when the overview state is bigger than WINDOW_PICKER. That is, between HIDDEN and WINDOW_PICKER states, inclusive, no clipping is applied. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1691>
This commit is contained in:
parent
1819e34f29
commit
b1970b95b8
@ -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 = [];
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user