🪲 Fix some GNOME 3.36 issues

This commit is contained in:
Simon Schneegans
2022-01-27 05:24:32 +01:00
parent f1b764062b
commit bf95e349da
+20 -24
View File
@@ -85,38 +85,34 @@ class Extension {
this._origDialogTime = imports.ui.windowManager.DIALOG_DESTROY_WINDOW_ANIMATION_TIME; this._origDialogTime = imports.ui.windowManager.DIALOG_DESTROY_WINDOW_ANIMATION_TIME;
Workspace.prototype._addWindowClone = function(...params) { Workspace.prototype._addWindowClone = function(...params) {
const result = extensionThis._origAddWindowClone.apply(this, params); const result = extensionThis._origAddWindowClone.apply(this, params);
const realWindow = params[0].get_compositor_private();
const clone = utils.shellVersionIs(3, 36) ? result[0] : result; let clone;
const window = params[0].get_compositor_private();
const xID = window.connect('notify::scale-x', () => { if (utils.shellVersionIs(3, 36)) {
if (window.scale_x > 0) { clone = result[0];
if (utils.shellVersionIs(3, 36)) { } else if (utils.shellVersionIs(3, 38)) {
clone.scale_x = window.scale_x; clone = result._windowContainer;
} else if (utils.shellVersionIs(3, 38)) { } else {
clone._windowContainer.scale_x = window.scale_x; clone = result.window_container;
} else { }
clone.window_container.scale_x = window.scale_x;
} const xID = realWindow.connect('notify::scale-x', () => {
if (realWindow.scale_x > 0) {
clone.scale_x = realWindow.scale_x;
} }
}); });
const yID = window.connect('notify::scale-y', () => { const yID = realWindow.connect('notify::scale-y', () => {
if (window.scale_y > 0) { if (realWindow.scale_y > 0) {
if (utils.shellVersionIs(3, 36)) { clone.scale_y = realWindow.scale_y;
clone.scale_y = window.scale_y;
} else if (utils.shellVersionIs(3, 38)) {
clone._windowContainer.scale_y = window.scale_y;
} else {
clone.window_container.scale_y = window.scale_y;
}
} }
}); });
clone.window_container.connect('destroy', () => { clone.connect('destroy', () => {
window.disconnect(xID); realWindow.disconnect(xID);
window.disconnect(yID); realWindow.disconnect(yID);
}); });
// On GNOME 3.36, the window clone's 'destroy' handler only calls _removeWindowClone // On GNOME 3.36, the window clone's 'destroy' handler only calls _removeWindowClone