From becd29c50af4a912b6ead3bf1e7f6d7a93d4bb87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 15 Sep 2016 17:41:52 +0200 Subject: [PATCH] altTab: Skip unminimize effect when cycling to a window Similar to windows on another workspace, selecting a minimized window doesn't look quite right - the selected window disappears, then animates back in. Fix this by adding support for skipping the next effect to the wm and use it to bypass the unminimize animation. https://bugzilla.gnome.org/show_bug.cgi?id=771536 --- js/ui/altTab.js | 5 +++++ js/ui/windowManager.js | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index 27aa2d7bf..dfdf9c3f9 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -448,6 +448,11 @@ const CyclerPopup = new Lang.Class({ let ws = window.get_workspace(); let activeWs = global.screen.get_active_workspace(); + if (window.minimized) { + Main.wm.skipNextEffect(window.get_compositor_private()); + window.unminimize(); + } + if (activeWs == ws) { Main.activateWindow(window); } else { diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 8b0398b3d..a3872af4d 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -683,6 +683,8 @@ const WindowManager = new Lang.Class({ this._dimmedWindows = []; + this._skippedActors = []; + this._allowedKeybindings = {}; this._isWorkspacePrepended = false; @@ -1035,6 +1037,10 @@ const WindowManager = new Lang.Class({ this._workspaceTracker.keepWorkspaceAlive(workspace, duration); }, + skipNextEffect: function(actor) { + this._skippedActors.push(actor); + }, + setCustomKeybindingHandler: function(name, modes, handler) { if (Meta.keybindings_set_custom_handler(name, handler)) this.allowKeybinding(name, modes); @@ -1061,6 +1067,9 @@ const WindowManager = new Lang.Class({ }, _shouldAnimateActor: function(actor, types) { + if (this._removeEffect(this._skippedActors, actor)) + return false; + if (!this._shouldAnimate()) return false;