[gnome-shell] WorkspaceSwitcher: simplify code for handling keybindings



commit de72065a4af0abe371d0f9005f43a74a11a5bbbc
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Sat Apr 14 14:40:30 2012 +0200

    WorkspaceSwitcher: simplify code for handling keybindings
    
    Most of code implementing workspace switches was repeated with
    minor differences on each direction. Instead, consolidate it
    and use the new meta_workspace_get_neighbor.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=674104

 js/ui/windowManager.js          |   73 ++++++--------------------------------
 js/ui/workspaceSwitcherPopup.js |   10 ++---
 js/ui/workspacesView.js         |    4 +-
 3 files changed, 18 insertions(+), 69 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index c6b17ad..4292537 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -564,72 +564,23 @@ const WindowManager = new Lang.Class({
             this._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
 
         if (binding.get_name() == 'switch-to-workspace-up')
-            this.actionMoveWorkspaceUp();
+            this.actionMoveWorkspace(Meta.MotionDirection.UP);
         else if (binding.get_name() == 'switch-to-workspace-down')
-            this.actionMoveWorkspaceDown();
-        // left/right would effectively act as synonyms for up/down if we enabled them;
-        // but that could be considered confusing.
-        // else if (binding.get_name() == 'switch-to-workspace-left')
-        //   this.actionMoveWorkspaceLeft();
-        // else if (binding.get_name() == 'switch-to-workspace-right')
-        //   this.actionMoveWorkspaceRight();
-    },
-
-    actionMoveWorkspaceLeft: function() {
-        let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
-        let activeWorkspaceIndex = global.screen.get_active_workspace_index();
-        let indexToActivate = activeWorkspaceIndex;
-        if (rtl && activeWorkspaceIndex < global.screen.n_workspaces - 1)
-            indexToActivate++;
-        else if (!rtl && activeWorkspaceIndex > 0)
-            indexToActivate--;
-
-        if (indexToActivate != activeWorkspaceIndex)
-            global.screen.get_workspace_by_index(indexToActivate).activate(global.get_current_time());
-
-        if (!Main.overview.visible)
-            this._workspaceSwitcherPopup.display(WorkspaceSwitcherPopup.UP, indexToActivate);
+            this.actionMoveWorkspace(Meta.MotionDirection.DOWN);
+        else if (binding.get_name() == 'switch-to-workspace-left')
+            this.actionMoveWorkspace(Meta.MotionDirection.LEFT);
+        else if (binding.get_name() == 'switch-to-workspace-right')
+            this.actionMoveWorkspace(Meta.MotionDirection.RIGHT);
     },
 
-    actionMoveWorkspaceRight: function() {
-        let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
-        let activeWorkspaceIndex = global.screen.get_active_workspace_index();
-        let indexToActivate = activeWorkspaceIndex;
-        if (rtl && activeWorkspaceIndex > 0)
-            indexToActivate--;
-        else if (!rtl && activeWorkspaceIndex < global.screen.n_workspaces - 1)
-            indexToActivate++;
+    actionMoveWorkspace: function(direction) {
+        let activeWorkspace = global.screen.get_active_workspace();
+        let toActivate = activeWorkspace.get_neighbor(direction);
 
-        if (indexToActivate != activeWorkspaceIndex)
-            global.screen.get_workspace_by_index(indexToActivate).activate(global.get_current_time());
+        if (toActivate && activeWorkspace != toActivate)
+            toActivate.activate(global.get_current_time());
 
         if (!Main.overview.visible)
-            this._workspaceSwitcherPopup.display(WorkspaceSwitcherPopup.DOWN, indexToActivate);
+            this._workspaceSwitcherPopup.display(direction, toActivate.index());
     },
-
-    actionMoveWorkspaceUp: function() {
-        let activeWorkspaceIndex = global.screen.get_active_workspace_index();
-        let indexToActivate = activeWorkspaceIndex;
-        if (activeWorkspaceIndex > 0)
-            indexToActivate--;
-
-        if (indexToActivate != activeWorkspaceIndex)
-            global.screen.get_workspace_by_index(indexToActivate).activate(global.get_current_time());
-
-        if (!Main.overview.visible)
-            this._workspaceSwitcherPopup.display(WorkspaceSwitcherPopup.UP, indexToActivate);
-    },
-
-    actionMoveWorkspaceDown: function() {
-        let activeWorkspaceIndex = global.screen.get_active_workspace_index();
-        let indexToActivate = activeWorkspaceIndex;
-        if (activeWorkspaceIndex < global.screen.n_workspaces - 1)
-            indexToActivate++;
-
-        if (indexToActivate != activeWorkspaceIndex)
-            global.screen.get_workspace_by_index(indexToActivate).activate(global.get_current_time());
-
-        if (!Main.overview.visible)
-            this._workspaceSwitcherPopup.display(WorkspaceSwitcherPopup.DOWN, indexToActivate);
-    }
 });
diff --git a/js/ui/workspaceSwitcherPopup.js b/js/ui/workspaceSwitcherPopup.js
index 51d2c28..1202d5f 100644
--- a/js/ui/workspaceSwitcherPopup.js
+++ b/js/ui/workspaceSwitcherPopup.js
@@ -3,18 +3,16 @@
 const Clutter = imports.gi.Clutter;
 const Lang = imports.lang;
 const Mainloop = imports.mainloop;
+const Meta  = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const St = imports.gi.St;
-const Main = imports.ui.main;
 
+const Main = imports.ui.main;
 const Tweener = imports.ui.tweener;
 
 const ANIMATION_TIME = 0.1;
 const DISPLAY_TIMEOUT = 600;
 
-const UP = -1;
-const DOWN = 1;
-
 const WorkspaceSwitcherPopup = new Lang.Class({
     Name: 'WorkspaceSwitcherPopup',
 
@@ -110,9 +108,9 @@ const WorkspaceSwitcherPopup = new Lang.Class({
         for (let i = 0; i < global.screen.n_workspaces; i++) {
             let indicator = null;
 
-           if (i == activeWorkspaceIndex && direction == UP)
+           if (i == activeWorkspaceIndex && direction == Meta.MotionDirection.UP)
                indicator = new St.Bin({ style_class: 'ws-switcher-active-up' });
-           else if(i == activeWorkspaceIndex && direction == DOWN)
+           else if(i == activeWorkspaceIndex && direction == Meta.MotionDirection.DOWN)
                indicator = new St.Bin({ style_class: 'ws-switcher-active-down' });
            else
                indicator = new St.Bin({ style_class: 'ws-switcher-box' });
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index df3143f..3a5c2ab 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -1048,10 +1048,10 @@ const WorkspacesDisplay = new Lang.Class({
     _onScrollEvent: function (actor, event) {
         switch ( event.get_scroll_direction() ) {
         case Clutter.ScrollDirection.UP:
-            Main.wm.actionMoveWorkspaceUp();
+            Main.wm.actionMoveWorkspace(Meta.MotionDirection.UP);
             break;
         case Clutter.ScrollDirection.DOWN:
-            Main.wm.actionMoveWorkspaceDown();
+            Main.wm.actionMoveWorkspace(Meta.MotionDirection.DOWN);
             break;
         }
     }



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