From 5dcee36d71578756bfecc23da3e257276dfa1fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Sun, 1 Mar 2020 15:43:35 +0100 Subject: [PATCH] Polish up animate down for fullscreen windows - Simply move the fullscreen clone if not visible - Do not start a new animation one is already in progress - Do not run animateDown when starting navigation --- navigator.js | 4 ---- tiling.js | 19 +++++++++++++------ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/navigator.js b/navigator.js index 5c7bf1e..a71bd7a 100644 --- a/navigator.js +++ b/navigator.js @@ -204,10 +204,6 @@ var Navigator = class Navigator { this.minimaps = new Map(); TopBar.fixTopBar(); - let selected = this.space.selectedWindow; - if (selected && selected.fullscreen) { - Tiling.animateDown(selected); - } this.space.startAnimate(); } diff --git a/tiling.js b/tiling.js index acb9d9e..a74af27 100644 --- a/tiling.js +++ b/tiling.js @@ -2541,7 +2541,8 @@ function ensureViewport(meta_window, space, force) { debug('Moving', meta_window.title); - if (space.selectedWindow.fullscreen) { + if (space.selectedWindow.fullscreen && + !meta_window.fullscreen) { animateDown(space.selectedWindow); } let x = ensuredX(meta_window, space); @@ -2550,11 +2551,17 @@ function ensureViewport(meta_window, space, force) { let selected = space.selectedWindow; let frame = meta_window.get_frame_rect(); if (!inPreview && selected.fullscreen) { - Tweener.addTween(selected.clone, - { y: frame.y - space.monitor.y, - time: prefs.animation_time, - onComplete: space.moveDone.bind(space) - }); + let y = 0; + let ty = selected.clone.get_transition('y'); + if (!space.isVisible(selected)) { + selected.clone.y = y; + } else if (!ty || ty.get_interval().final !== y) { + Tweener.addTween(selected.clone, + { y: y, + time: prefs.animation_time, + onComplete: space.moveDone.bind(space) + }); + } } move_to(space, meta_window, { x, force