Fix resizing while navigating

We need to delete all tweens on the clone and sync its position when the actor
isn't visible.
This commit is contained in:
Tor Hedin Brønner
2018-05-01 15:40:11 +02:00
parent 4297c8a6e2
commit 68bf14d526
+21 -8
View File
@@ -1103,15 +1103,28 @@ function propagateBackward(space, n, x, gap) {
function sizeHandler(metaWindow) {
debug('size-changed', metaWindow.title);
let space = spaces.spaceOfWindow(metaWindow);
if (space.selectedWindow === metaWindow) {
let index = space.indexOf(metaWindow);
let frame = metaWindow.get_frame_rect();
let monitor = space.monitor;
frame.x -= monitor.x; frame.y -= monitor.y;
if (space.selectedWindow !== metaWindow)
return;
space.monitor.clickOverlay.reset();
propagateForward(space, index + 1, frame.x + frame.width + window_gap);
propagateBackward(space, index - 1, frame.x - window_gap);
let index = space.indexOf(metaWindow);
let frame = metaWindow.get_frame_rect();
let monitor = space.monitor;
frame.x -= monitor.x; frame.y -= monitor.y;
space.monitor.clickOverlay.reset();
propagateForward(space, index + 1, frame.x + frame.width + window_gap);
propagateBackward(space, index - 1, frame.x - window_gap);
// Sync clone position
let clone = metaWindow.clone;
if (clone.visible) {
// Note we can't rely on the actors position being set here.
let buffer = metaWindow.get_buffer_rect();
let x_offset = frame.x - buffer.x;
let y_offset = frame.y - buffer.y;
Tweener.removeTweens(clone);
clone.set_position(frame.x - monitor.x - x_offset,
frame.y - monitor.y - y_offset);
}
}