Connect to size-changed after initial placement and resize

This prevents the move_to call in `resizeHandler` leading to the wrong initial
position in wayland.
This commit is contained in:
Tor Hedin Brønner
2018-07-05 22:11:07 +02:00
parent 8ae1814acb
commit d264382dac
+7 -7
View File
@@ -560,7 +560,7 @@ class Spaces extends Map {
global.display.get_tab_list(Meta.TabList.NORMAL_ALL, null)
.forEach(w => {
registerWindow(w);
signals.connect(w, 'size-changed', cloneSizeHandler);
signals.connect(w, 'size-changed', resizeHandler);
});
let spaceContainer = new Clutter.Actor({name: 'spaceContainer'});
@@ -848,7 +848,6 @@ function registerWindow(metaWindow) {
signals.connect(metaWindow, "focus", focus_wrapper);
signals.connect(metaWindow, 'notify::minimized', minimizeWrapper);
signals.connect(metaWindow, 'notify::fullscreen', fullscreenWrapper);
signals.connect(metaWindow, 'size-changed', resizeHandler);
signals.connect(actor, 'show', showWrapper);
signals.connect(actor, 'destroy', destroyHandler);
@@ -858,14 +857,12 @@ function destroyHandler(actor) {
signals.disconnect(actor);
}
function cloneSizeHandler(metaWindow) {
function resizeHandler(metaWindow) {
// On wayland the clone size doesn't seem to update properly if the window
// actor is hidden.
let b = metaWindow.get_buffer_rect();
metaWindow.clone.set_size(b.width, b.height);
}
function resizeHandler(metaWindow) {
let space = spaces.spaceOfWindow(metaWindow);
if (metaWindow !== space.selectedWindow)
return;
@@ -1069,7 +1066,7 @@ function insertWindow(metaWindow, {existing}) {
}
if (!add_filter(metaWindow)) {
!existing && signals.connect(metaWindow, 'size-changed', cloneSizeHandler);
!existing && signals.connect(metaWindow, 'size-changed', resizeHandler);
return;
}
@@ -1108,7 +1105,10 @@ function insertWindow(metaWindow, {existing}) {
scale_y: 1,
time: 0.25,
transition: 'easeInOutQuad',
onComplete: () => signals.connect(metaWindow, 'size-changed', cloneSizeHandler)
onComplete: () => {
space.layout();
signals.connect(metaWindow, 'size-changed', resizeHandler);
}
});
} else {
clone.set_position(