From 89a3daf9febdc46e423aa74d9bf07fdadcc35472 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] 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); }