[gnome-shell] Add a new way to open an application on a new workspace



commit 21ff050a405013347ff85d1fcd347131e2b0e491
Author: Christina Boumpouka <hmpoumpouka gmail com>
Date:   Wed Apr 14 23:22:41 2010 +0300

    Add a new way to open an application on a new workspace
    
    Allow using the middle mouse button to open a new instance of an
    application on a new workspace. The middle mouse button function
    can be achieved by clicking the left and right mouse buttons
    together with a two buttons mouse or holding Ctrl while clicking
    with a single button mouse.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=591645

 js/ui/appDisplay.js |    5 +++++
 js/ui/overview.js   |   34 +++++++++++++++++-----------------
 2 files changed, 22 insertions(+), 17 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index a68feb3..14a3e19 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -457,6 +457,11 @@ AppWellIcon.prototype = {
         let button = event.get_button();
         if (button == 1) {
             this._onActivate(event);
+        } else if (button == 2) {
+            Main.overview.workspaces.addWorkspace();
+            this.emit('launching');
+            this.app.open_new_window();
+            Main.overview.hide();
         } else if (button == 3) {
             // Don't bind to the right click here; we want left click outside the
             // area to deactivate as well.
diff --git a/js/ui/overview.js b/js/ui/overview.js
index 350ba2b..b52862d 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -250,19 +250,19 @@ Overview.prototype = {
 
         this._coverPane.lower_bottom();
 
-        this._workspaces = null;
+        this.workspaces = null;
     },
 
     _onViewChanged: function() {
         if (!this.visible)
             return;
 
-        this._workspaces = this._workspacesManager.workspacesView;
+        this.workspaces = this._workspacesManager.workspacesView;
 
         // Show new workspacesView
-        this._group.add_actor(this._workspaces.actor);
-        this._workspacesBar.raise(this._workspaces.actor);
-        this._dash.actor.raise(this._workspaces.actor);
+        this._group.add_actor(this.workspaces.actor);
+        this._workspacesBar.raise(this.workspaces.actor);
+        this._dash.actor.raise(this.workspaces.actor);
     },
 
     _recalculateGridSizes: function () {
@@ -381,7 +381,7 @@ Overview.prototype = {
                         this._activeDisplayPane.close();
                     return true;
                 }));
-                this._workspaces.actor.opacity = 64;
+                this.workspaces.actor.opacity = 64;
             } else if (pane == this._activeDisplayPane) {
                 this._activeDisplayPane = null;
                 if (backgroundEventId != null) {
@@ -390,7 +390,7 @@ Overview.prototype = {
                 }
                 this._transparentBackground.lower_bottom();
                 this._paneContainer.hide();
-                this._workspaces.actor.opacity = 255;
+                this.workspaces.actor.opacity = 255;
             }
         }));
     },
@@ -416,13 +416,13 @@ Overview.prototype = {
     // Returns the scale the Overview has when we just start zooming out
     // to overview mode. That is, when just the active workspace is showing.
     getZoomedInScale : function() {
-        return 1 / this._workspaces.getScale();
+        return 1 / this.workspaces.getScale();
     },
 
     // Returns the position the Overview has when we just start zooming out
     // to overview mode. That is, when just the active workspace is showing.
     getZoomedInPosition : function() {
-        let [posX, posY] = this._workspaces.getActiveWorkspacePosition();
+        let [posX, posY] = this.workspaces.getActiveWorkspacePosition();
         let scale = this.getZoomedInScale();
 
         return [- posX * scale, - posY * scale];
@@ -457,13 +457,13 @@ Overview.prototype = {
                                                  this._workspacesY);
         this._workspacesManager.connect('view-changed',
                                         Lang.bind(this, this._onViewChanged));
-        this._workspaces = this._workspacesManager.workspacesView;
-        this._group.add_actor(this._workspaces.actor);
+        this.workspaces = this._workspacesManager.workspacesView;
+        this._group.add_actor(this.workspaces.actor);
 
         // The workspaces actor is as big as the screen, so we have to raise the dash above it
         // for drag and drop to work.  In the future we should fix the workspaces to not
         // be as big as the screen.
-        this._dash.actor.raise(this._workspaces.actor);
+        this._dash.actor.raise(this.workspaces.actor);
 
         this._workspacesBar = this._workspacesManager.controlsBar.actor;
         this._workspacesBar.set_position(this._workspacesBarX,
@@ -471,7 +471,7 @@ Overview.prototype = {
         this._workspacesBar.width = this._workspacesBarWidth;
 
         this._group.add_actor(this._workspacesBar);
-        this._workspacesBar.raise(this._workspaces.actor);
+        this._workspacesBar.raise(this.workspaces.actor);
 
         // All the the actors in the window group are completely obscured,
         // hiding the group holding them while the Overview is displayed greatly
@@ -521,7 +521,7 @@ Overview.prototype = {
         this._hideInProgress = true;
         if (this._activeDisplayPane != null)
             this._activeDisplayPane.close();
-        this._workspaces.hide();
+        this.workspaces.hide();
 
         // Create a zoom in effect by transforming the Overview group so that
         // the active workspace fills up the whole screen. The opposite
@@ -566,7 +566,7 @@ Overview.prototype = {
      * and will return %null.
      */
     getWorkspacesForWindow: function(metaWindow) {
-        return this._workspaces;
+        return this.workspaces;
     },
 
     //// Private methods ////
@@ -584,8 +584,8 @@ Overview.prototype = {
     _hideDone: function() {
         global.window_group.show();
 
-        this._workspaces.destroy();
-        this._workspaces = null;
+        this.workspaces.destroy();
+        this.workspaces = null;
 
         this._workspacesBar.destroy();
         this._workspacesBar = null;



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