From df2f939f3a54f5b30b4f87451e45939944b80d80 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 8 Mar 2011 14:50:34 +0100 Subject: [PATCH] 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 file changed, 16 insertions(+), 1 deletion(-) diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index df69f9968..c2502ef98 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(); },