From 2c48efa3fd00c5ca203aefc29b099c8affc4441d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 9 Mar 2011 16:56:08 +0100 Subject: [PATCH] dash: Handle cancelled drags If a drag was cancelled, do animations like size changes or zooming out the remove target in parallel with the snapback animation. https://bugzilla.gnome.org/show_bug.cgi?id=644324 --- js/ui/dash.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/js/ui/dash.js b/js/ui/dash.js index 6a39edc48..ed22feab6 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -283,20 +283,37 @@ Dash.prototype = { Lang.bind(this, this._onDragBegin)); Main.overview.connect('item-drag-end', Lang.bind(this, this._onDragEnd)); + Main.overview.connect('item-drag-cancelled', + Lang.bind(this, this._onDragCancelled)); Main.overview.connect('window-drag-begin', Lang.bind(this, this._onDragBegin)); + Main.overview.connect('window-drag-cancelled', + Lang.bind(this, this._onDragCancelled)); Main.overview.connect('window-drag-end', Lang.bind(this, this._onDragEnd)); }, _onDragBegin: function() { + this._dragCancelled = false; this._dragMonitor = { dragMotion: Lang.bind(this, this._onDragMotion) }; DND.addDragMonitor(this._dragMonitor); }, + _onDragCancelled: function() { + this._dragCancelled = true; + this._endDrag(); + }, + _onDragEnd: function() { + if (this._dragCancelled) + return; + + this._endDrag(); + }, + + _endDrag: function() { this._clearDragPlaceholder(); if (this._favRemoveTarget) { this._favRemoveTarget.actor.hide();