From 4226fd8d43d2531bc2d0fe5b027db18efddeb729 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Sat, 1 Feb 2025 13:07:29 -0500 Subject: [PATCH] Fix chrome actors all reported on primary monitor on session start #1753 get_transformed_position and get_transformed_size return 0,0 for a few frames on gnome-shell start, so all initial chrome actor visibilities are evaluated based on the fullscreen status of the primary monitor, even if those actors are on a secondary monitor. Vanilla gnome-shell chrome actors are all on the primary monitor anyway, so this works "perfectly", of course --- src/panelManager.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/panelManager.js b/src/panelManager.js index fe0d7ae..9fa5388 100755 --- a/src/panelManager.js +++ b/src/panelManager.js @@ -153,6 +153,14 @@ export const PanelManager = class { ) Main.layoutManager._updateHotCorners() + Main.layoutManager.findIndexForActor = (actor) => + '_dtpIndex' in actor + ? actor._dtpIndex + : Layout.LayoutManager.prototype.findIndexForActor.call( + Main.layoutManager, + actor, + ) + this._forceHotCornerId = SETTINGS.connect( 'changed::stockgs-force-hotcorner', () => Main.layoutManager._updateHotCorners(), @@ -329,6 +337,8 @@ export const PanelManager = class { Main.layoutManager._updateHotCorners = this._oldUpdateHotCorners Main.layoutManager._updateHotCorners() + delete Main.layoutManager.findIndexForActor + SETTINGS.disconnect(this._forceHotCornerId) if (this._enableHotCornersId) { @@ -540,10 +550,7 @@ export const PanelManager = class { panelBox.add_child(panel) panel.enable() - panelBox.visible = true - if (monitor.inFullscreen) { - panelBox.hide() - } + panelBox._dtpIndex = monitor.index panelBox.set_position(0, 0) return panel