1) fix restacking log warning 2) use connectObject API

This commit is contained in:
Bruce Leidl 2024-04-10 09:26:25 -04:00
parent f57f805dd5
commit c33f18c4d5

View File

@ -118,7 +118,8 @@ class WorkspaceGroup extends Clutter.Actor {
this._createWindows(); this._createWindows();
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this._restackedId = global.display.connect('restacked', this._syncStacking.bind(this)); global.display.connectObject('restacked',
this._syncStacking.bind(this), this);
} }
get workspace() { get workspace() {
@ -144,10 +145,12 @@ class WorkspaceGroup extends Clutter.Actor {
this._shouldShowWindow(w.meta_window)); this._shouldShowWindow(w.meta_window));
let lastRecord; let lastRecord;
const bottomActor = this._background ?? null;
for (const windowActor of windowActors) { for (const windowActor of windowActors) {
const record = this._windowRecords.find(r => r.windowActor === windowActor); const record = this._windowRecords.find(r => r.windowActor === windowActor);
this.set_child_above_sibling(record.clone, lastRecord ? lastRecord.clone : this._background); this.set_child_above_sibling(record.clone,
lastRecord ? lastRecord.clone : bottomActor);
lastRecord = record; lastRecord = record;
} }
} }
@ -166,24 +169,22 @@ class WorkspaceGroup extends Clutter.Actor {
}); });
this.add_child(clone); this.add_child(clone);
const record = {windowActor, clone }; const record = {windowActor, clone };
record.windowDestroyId = windowActor.connect('destroy', () => { windowActor.connectObject('destroy', () => {
clone.destroy(); clone.destroy();
this._windowRecords.splice(this._windowRecords.indexOf(record), 1); this._windowRecords.splice(this._windowRecords.indexOf(record), 1);
}); }, this);
this._windowRecords.push(record); this._windowRecords.push(record);
} }
} }
_removeWindows() { _removeWindows() {
for (const record of this._windowRecords) { for (const record of this._windowRecords) {
record.windowActor.disconnect(record.windowDestroyId);
record.clone.destroy(); record.clone.destroy();
} }
this._windowRecords = []; this._windowRecords = [];
} }
_onDestroy() { _onDestroy() {
global.display.disconnect(this._restackedId);
this._removeWindows(); this._removeWindows();
this._bgManager.destroy(); this._bgManager.destroy();
} }