workspace: Initialize overview windows correctly in constructor

Currently overview windows added in workspace constructor lack monitoring
the skip-taskbar property. All other windows added after this have
this monitoring.

This uses existing code to correctly add the signal and removes all redundant
code.

It also insures all transients are handled correctly on initialization using
the existing code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3386>
This commit is contained in:
Sundeep Mediratta 2024-06-23 10:12:51 -04:00
parent b7a18a28e7
commit 8af8a27d91

View File

@ -1089,16 +1089,11 @@ class Workspace extends St.Widget {
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this._skipTaskbarSignals = new Map(); this._skipTaskbarSignals = new Map();
const windows = global.get_window_actors().map(a => a.meta_window)
.filter(this._isMyWindow, this);
// Create clones for windows that should be
// visible in the Overview
this._windows = []; this._windows = [];
for (let i = 0; i < windows.length; i++) { this._layoutFrozenId = 0;
if (this._isOverviewWindow(windows[i]))
this._addWindowClone(windows[i]); // DND requires this to be set
} this._delegate = this;
// Track window changes, but let the window tracker process them first // Track window changes, but let the window tracker process them first
this.metaWorkspace?.connectObject( this.metaWorkspace?.connectObject(
@ -1109,10 +1104,10 @@ class Workspace extends St.Widget {
'window-entered-monitor', this._windowEnteredMonitor.bind(this), GObject.ConnectFlags.AFTER, 'window-entered-monitor', this._windowEnteredMonitor.bind(this), GObject.ConnectFlags.AFTER,
'window-left-monitor', this._windowLeftMonitor.bind(this), GObject.ConnectFlags.AFTER, 'window-left-monitor', this._windowLeftMonitor.bind(this), GObject.ConnectFlags.AFTER,
this); this);
this._layoutFrozenId = 0;
// DND requires this to be set // Create clones for windows that should be
this._delegate = this; // visible in the Overview
global.get_window_actors().map(a => this._doAddWindow(a.meta_window));
} }
_shouldLeaveOverview() { _shouldLeaveOverview() {