From d595d168ed0fccf57b1995a4d36169d978820a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 21 Feb 2024 17:37:16 +0100 Subject: [PATCH 12/28] workspace-indicator: Only change top bar redirect when in top bar While this is always the case for the workspace indicator, adding the check will allow to use the same code in the window list. Part-of: --- .../workspace-indicator/workspaceIndicator.js | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index 9a1055aa..f118654e 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -302,6 +302,16 @@ export class WorkspaceIndicator extends PanelMenu.Button { this.connect('scroll-event', this._onScrollEvent.bind(this)); this._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this)); + + this._inTopBar = false; + this.connect('notify::realized', () => { + if (!this.realized) + return; + + this._inTopBar = Main.panel.contains(this); + this._updateTopBarRedirect(); + }); + this._updateMenu(); this._updateThumbnails(); this._updateThumbnailVisibility(); @@ -313,7 +323,9 @@ export class WorkspaceIndicator extends PanelMenu.Button { } _onDestroy() { - Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); + if (this._inTopBar) + Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); + this._inTopBar = false; super._onDestroy(); } @@ -328,9 +340,16 @@ export class WorkspaceIndicator extends PanelMenu.Button { this._statusLabel.visible = useMenu; this._thumbnailsBox.visible = !useMenu; + this._updateTopBarRedirect(); + } + + _updateTopBarRedirect() { + if (!this._inTopBar) + return; + // Disable offscreen-redirect when showing the workspace switcher // so that clip-to-allocation works - Main.panel.set_offscreen_redirect(useMenu + Main.panel.set_offscreen_redirect(this._thumbnailsBox.visible ? Clutter.OffscreenRedirect.ALWAYS : Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY); } -- 2.44.0