From d287ba16d856043f2ebec77e16cdf1f392ae8f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Mon, 10 Sep 2018 17:26:43 +0200 Subject: [PATCH] Refactor `Space.fixOverlays` from move_to When using gestures we can end up with broken edge overlays, so we fix them on moveDone. --- tiling.js | 54 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/tiling.js b/tiling.js index 9ef3ab7..591a3bb 100644 --- a/tiling.js +++ b/tiling.js @@ -571,6 +571,8 @@ class Space extends Array { actor.show(); }); + this.fixOverlays(); + this.emit('move-done'); } @@ -590,6 +592,34 @@ class Space extends Array { }); } + fixOverlays(metaWindow) { + metaWindow = metaWindow || this.selectedWindow; + let index = this.indexOf(metaWindow); + let target = this.targetX; + this.monitor.clickOverlay.reset(); + for (let overlay = this.monitor.clickOverlay.right, + n=index+1 ; n < this.length; n++) { + let metaWindow = this[n][0]; + let clone = metaWindow.clone; + let x = clone.targetX + target; + if (!overlay.target && x + clone.width > this.width) { + overlay.setTarget(this, n); + break; + } + } + + for (let overlay = this.monitor.clickOverlay.left, + n=index-1; n >= 0; n--) { + let metaWindow = this[n][0]; + let clone = metaWindow.clone; + let x = clone.targetX + target; + if (!overlay.target && x < 0) { + overlay.setTarget(this, n); + break; + } + } + } + setSettings([uuid, settings]) { this.signals.disconnect(this.settings); @@ -1786,29 +1816,7 @@ function move_to(space, metaWindow, { x, y, delay, transition, } }); - // Set up the edge overlays so they're available immediately - space.monitor.clickOverlay.reset(); - for (let overlay = space.monitor.clickOverlay.right, - n=index+1 ; n < space.length; n++) { - let metaWindow = space[n][0]; - let clone = metaWindow.clone; - let x = clone.targetX + target; - if (!overlay.target && x + clone.width > space.width) { - overlay.setTarget(space, n); - break; - } - } - - for (let overlay = space.monitor.clickOverlay.left, - n=index-1; n >= 0; n--) { - let metaWindow = space[n][0]; - let clone = metaWindow.clone; - let x = clone.targetX + target; - if (!overlay.target && x < 0) { - overlay.setTarget(space, n); - break; - } - } + space.fixOverlays(metaWindow); } var noAnimate = false;