From d264382dac1b8da13d0333c6cf7294b6e9f2c345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Wed, 4 Jul 2018 00:26:02 +0200 Subject: [PATCH] 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. --- tiling.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tiling.js b/tiling.js index 67cb31e..550ddba 100644 --- a/tiling.js +++ b/tiling.js @@ -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(