From bc136c600d0d85d448c127d3961c21320563888f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 16 Jun 2025 20:21:32 +0200 Subject: [PATCH] window-list: Only remove fullscreen tracking in overview Since commit 981e8e42e2, 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: (cherry picked from commit 0ad959de1eb4a707ba7b5e4c24864dbec6f398c9) --- extensions/window-list/extension.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 3a682012..96855cc4 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -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') ||