[gnome-shell] windowManager: Avoid code duplication



commit bf8d30603e57bd1aa6ef25e1528f7135dfb835fc
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu May 19 16:36:46 2016 +0200

    windowManager: Avoid code duplication
    
    The various switcher keybindings are handled identically, except for
    the popup that is shown; update the code to reflect that instead of
    duplicating the code again and again.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=730739

 js/ui/windowManager.js |   78 +++++++++++++++++++++--------------------------
 1 files changed, 35 insertions(+), 43 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index f8aef2d..51ce482 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -850,34 +850,34 @@ const WindowManager = new Lang.Class({
                                         Lang.bind(this, this._showWorkspaceSwitcher));
         this.setCustomKeybindingHandler('switch-applications',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startAppSwitcher));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('switch-group',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startAppSwitcher));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('switch-applications-backward',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startAppSwitcher));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('switch-group-backward',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startAppSwitcher));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('switch-windows',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startWindowSwitcher));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('switch-windows-backward',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startWindowSwitcher));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('cycle-windows',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startWindowCycler));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('cycle-windows-backward',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startWindowCycler));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('cycle-group',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startGroupCycler));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('cycle-group-backward',
                                         Shell.ActionMode.NORMAL,
-                                        Lang.bind(this, this._startGroupCycler));
+                                        Lang.bind(this, this._startSwitcher));
         this.setCustomKeybindingHandler('switch-panels',
                                         Shell.ActionMode.NORMAL |
                                         Shell.ActionMode.OVERVIEW |
@@ -1756,45 +1756,37 @@ const WindowManager = new Lang.Class({
         this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
     },
 
-    _startAppSwitcher : function(display, screen, window, binding) {
-        /* prevent a corner case where both popups show up at once */
-        if (this._workspaceSwitcherPopup != null)
-            this._workspaceSwitcherPopup.destroy();
-
-        let tabPopup = new AltTab.AppSwitcherPopup();
-
-        if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
-            tabPopup.destroy();
-    },
-
-    _startWindowSwitcher : function(display, screen, window, binding) {
-        /* prevent a corner case where both popups show up at once */
-        if (this._workspaceSwitcherPopup != null)
-            this._workspaceSwitcherPopup.destroy();
-
-        let tabPopup = new AltTab.WindowSwitcherPopup();
-
-        if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
-            tabPopup.destroy();
-    },
-
-    _startWindowCycler : function(display, screen, window, binding) {
-        /* prevent a corner case where both popups show up at once */
-        if (this._workspaceSwitcherPopup != null)
-            this._workspaceSwitcherPopup.destroy();
-
-        let tabPopup = new AltTab.WindowCyclerPopup();
+    _startSwitcher: function(display, screen, window, binding) {
+        let constructor = null;
+        switch (binding.get_name()) {
+            case 'switch-applications':
+            case 'switch-applications-backward':
+            case 'switch-group':
+            case 'switch-group-backward':
+                constructor = AltTab.AppSwitcherPopup;
+                break;
+            case 'switch-windows':
+            case 'switch-windows-backward':
+                constructor = AltTab.WindowSwitcherPopup;
+                break;
+            case 'cycle-windows':
+            case 'cycle-windows-backward':
+                constructor = AltTab.WindowCyclerPopup;
+                break;
+            case 'cycle-group':
+            case 'cycle-group-backward':
+                constructor = AltTab.GroupCyclerPopup;
+                break;
+        }
 
-        if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
-            tabPopup.destroy();
-    },
+        if (!constructor)
+            return;
 
-    _startGroupCycler : function(display, screen, window, binding) {
         /* prevent a corner case where both popups show up at once */
         if (this._workspaceSwitcherPopup != null)
             this._workspaceSwitcherPopup.destroy();
 
-        let tabPopup = new AltTab.GroupCyclerPopup();
+        let tabPopup = new constructor();
 
         if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
             tabPopup.destroy();


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