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(