From 68bf14d52644fdc16da833f87db5fa42121c4779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Tue, 1 May 2018 15:21:47 +0200 Subject: [PATCH] Fix resizing while navigating We need to delete all tweens on the clone and sync its position when the actor isn't visible. --- tiling.js | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/tiling.js b/tiling.js index bde3965..b042a90 100644 --- a/tiling.js +++ b/tiling.js @@ -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); } }