[gnome-shell] altTab: Skip unminimize effect when cycling to a window



commit becd29c50af4a912b6ead3bf1e7f6d7a93d4bb87
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Sep 15 17:41:52 2016 +0200

    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(+), 0 deletions(-)
---
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index 27aa2d7..dfdf9c3 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 8b0398b..a3872af 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;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]