windowManager: listen actively to windows being destroyed during WS switch
Prevents gjs from dealing with already dispose()d objects. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/539
This commit is contained in:
parent
2d791a51c0
commit
b087752b55
@ -1910,6 +1910,14 @@ var WindowManager = new Lang.Class({
|
|||||||
actor.visible = visible;
|
actor.visible = visible;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < switchData.windows.length; i++) {
|
||||||
|
let w = switchData.windows[i];
|
||||||
|
|
||||||
|
w.windowDestroyId = w.window.connect('destroy', () => {
|
||||||
|
switchData.windows.splice(switchData.windows.indexOf(w), 1);
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_finishWorkspaceSwitch(switchData) {
|
_finishWorkspaceSwitch(switchData) {
|
||||||
@ -1917,9 +1925,8 @@ var WindowManager = new Lang.Class({
|
|||||||
|
|
||||||
for (let i = 0; i < switchData.windows.length; i++) {
|
for (let i = 0; i < switchData.windows.length; i++) {
|
||||||
let w = switchData.windows[i];
|
let w = switchData.windows[i];
|
||||||
if (w.window.is_destroyed()) // Window gone
|
|
||||||
continue;
|
|
||||||
|
|
||||||
|
w.window.disconnect(w.windowDestroyId);
|
||||||
w.window.reparent(w.parent);
|
w.window.reparent(w.parent);
|
||||||
|
|
||||||
if (w.window.get_meta_window().get_workspace() !=
|
if (w.window.get_meta_window().get_workspace() !=
|
||||||
|
Loading…
Reference in New Issue
Block a user