appDisplay: Restore dragged item's position on drag cancel

Otherwise we end up with the grid in an inconsistent state.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284
This commit is contained in:
Georges Basile Stavracas Neto 2020-06-23 10:33:22 -03:00 committed by Florian Müllner
parent d1cbf6c7a9
commit 701d110493

View File

@ -685,6 +685,7 @@ class AppDisplay extends BaseAppView {
Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this));
Main.overview.connect('item-drag-end', this._onDragEnd.bind(this));
Main.overview.connect('item-drag-cancelled', this._onDragCancelled.bind(this));
this.connect('destroy', this._onDestroy.bind(this));
@ -1073,6 +1074,17 @@ class AppDisplay extends BaseAppView {
this._resetOvershoot();
}
_onDragCancelled(_overview, source) {
const view = _getViewFromIcon(source);
if (view instanceof FolderView)
return;
// At this point, the positions aren't stored yet, thus _redisplay()
// will move all items to their original positions
this._redisplay();
}
_canAccept(source) {
return source instanceof AppViewItem;
}