window-list: Only remove fullscreen tracking in overview
Since commit981e8e42e2, we untrack chrome in the overview to avoid fullscreen tracking interfering with hiding the window list in the overview. However this also means that we no longer contribute to the struts while in the overview, which can lead to unwanted window resizes around the transition. So instead of fully untracking the actor, retrack without fullscreen tracking. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/409> (cherry picked from commit0ad959de1e)
This commit is contained in:
@@ -772,11 +772,20 @@ class WindowList extends St.Widget {
|
||||
() => this._onWorkspaceMenuSet(), this);
|
||||
this._onWorkspaceMenuSet();
|
||||
|
||||
const chromeOptions = {
|
||||
const inOverview = Main.overview.visible ||
|
||||
(Main.layoutManager._startingUp && Main.sessionMode.hasOverview);
|
||||
|
||||
const overviewChromeOptions = {
|
||||
affectsStruts: true,
|
||||
};
|
||||
const chromeOptions = {
|
||||
...overviewChromeOptions,
|
||||
trackFullscreen: true,
|
||||
};
|
||||
Main.layoutManager.addChrome(this, chromeOptions);
|
||||
Main.layoutManager.addChrome(this, inOverview
|
||||
? overviewChromeOptions
|
||||
: chromeOptions);
|
||||
|
||||
Main.uiGroup.set_child_above_sibling(this, Main.layoutManager.panelBox);
|
||||
Main.ctrlAltTabManager.addGroup(this, _('Window List'), 'start-here-symbolic');
|
||||
|
||||
@@ -813,12 +822,12 @@ class WindowList extends St.Widget {
|
||||
|
||||
Main.overview.connectObject(
|
||||
'showing', () => {
|
||||
Main.layoutManager.untrackChrome(this);
|
||||
this._retrackChrome(overviewChromeOptions);
|
||||
this.hide();
|
||||
this._updateKeyboardAnchor();
|
||||
},
|
||||
'hidden', () => {
|
||||
Main.layoutManager.trackChrome(this, chromeOptions);
|
||||
this._retrackChrome(chromeOptions);
|
||||
this.visible = !this._monitor.inFullscreen;
|
||||
this._updateKeyboardAnchor();
|
||||
}, this);
|
||||
@@ -878,6 +887,11 @@ class WindowList extends St.Widget {
|
||||
this._monitor.y + this._monitor.height - this.height);
|
||||
}
|
||||
|
||||
_retrackChrome(options) {
|
||||
Main.layoutManager.untrackChrome(this);
|
||||
Main.layoutManager.trackChrome(this, options);
|
||||
}
|
||||
|
||||
_updateWorkspaceIndicatorVisibility() {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let hasWorkspaces = this._mutterSettings.get_boolean('dynamic-workspaces') ||
|
||||
|
||||
Reference in New Issue
Block a user