From 0e7c0276ed33487d3a2c5ec39b669628345fecee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Thu, 14 Sep 2017 01:38:20 +0200 Subject: [PATCH] Fix alignment when closing the very first or last window There's very little delay between `focus` and `window-removed` so there's no jumpiness when running ensure twice. --- tiling.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tiling.js b/tiling.js index cfd73c8..41ba535 100644 --- a/tiling.js +++ b/tiling.js @@ -102,8 +102,8 @@ timestamp = () => { } ensuring = false; -ensure_viewport = (meta_window) => { - if (ensuring == meta_window) { +ensure_viewport = (meta_window, force) => { + if (ensuring == meta_window && !force) { debug('already ensuring', meta_window.title); return; } @@ -255,8 +255,9 @@ remove_handler = (ws, meta_window) => { // Re-layout: Needed if the removed window didn't have focus. // Not sure if we can check if that was the case or not? - workspace[removed_i - 1].activate(timestamp()); - focus_handler(workspace[focus()]) + workspace[Math.max(0, removed_i - 1)].activate(timestamp()); + // Force a new ensure, since the focus_handler is run before window-removed + ensure_viewport(workspace[focus()], true) } add_all_from_workspace = (workspace) => {