[gnome-shell] Start the workspace zoom out immediately on dnd cancel.



commit df2f939f3a54f5b30b4f87451e45939944b80d80
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Mar 8 14:50:34 2011 +0100

    Start the workspace zoom out immediately on dnd cancel.
    
    This means the snap-back animation happens at the same time as the zoom,
    which looks much better.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=643786

 js/ui/workspacesView.js |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index df69f99..c2502ef 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -553,6 +553,7 @@ WorkspacesDisplay.prototype = {
         this.workspacesView = null;
 
         this._inDrag = false;
+        this._cancelledDrag = false;
         this._zoomOut = false;
         this._zoomFraction = 0;
 
@@ -562,6 +563,7 @@ WorkspacesDisplay.prototype = {
         this._itemDragBeginId = 0;
         this._itemDragEndId = 0;
         this._windowDragBeginId = 0;
+        this._windowDragCancelledId = 0;
         this._windowDragEndId = 0;
     },
 
@@ -597,6 +599,9 @@ WorkspacesDisplay.prototype = {
         if (this._windowDragBeginId == 0)
             this._windowDragBeginId = Main.overview.connect('window-drag-begin',
                                                             Lang.bind(this, this._dragBegin));
+        if (this._windowDragCancelledId == 0)
+            this._windowDragCancelledId = Main.overview.connect('window-drag-cancelled',
+                                                            Lang.bind(this, this._dragCancelled));
         if (this._windowDragEndId == 0)
             this._windowDragEndId = Main.overview.connect('window-drag-end',
                                                           Lang.bind(this, this._dragEnd));
@@ -631,6 +636,10 @@ WorkspacesDisplay.prototype = {
             Main.overview.disconnect(this._windowDragBeginId);
             this._windowDragBeginId = 0;
         }
+        if (this._windowDragCancelledId > 0) {
+            Main.overview.disconnect(this._windowDragCancelledId);
+            this._windowDragCancelledId = 0;
+        }
         if (this._windowDragEndId > 0) {
             Main.overview.disconnect(this._windowDragEndId);
             this._windowDragEndId = 0;
@@ -782,7 +791,7 @@ WorkspacesDisplay.prototype = {
         if (Main.overview.animationInProgress)
             return;
 
-        let shouldZoom = this._controls.hover || this._inDrag;
+        let shouldZoom = this._controls.hover || (this._inDrag && !this._cancelledDrag);
         if (shouldZoom != this._zoomOut) {
             this._zoomOut = shouldZoom;
             this._updateWorkspacesGeometry();
@@ -805,6 +814,12 @@ WorkspacesDisplay.prototype = {
 
     _dragBegin: function() {
         this._inDrag = true;
+        this._cancelledDrag = false;
+        this._updateZoom();
+    },
+
+    _dragCancelled: function() {
+        this._cancelledDrag = true;
         this._updateZoom();
     },
 



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