[gnome-shell/gbsneto/custom-icon-positions: 21/31] appDisplay: Restore dragged item's position on drag cancel



commit f10a37713622f25cc0e6f713e1825cddb8e07d0f
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Jun 23 10:33:22 2020 -0300

    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

 js/ui/appDisplay.js | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 469e4cb59e..955de5e6d2 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -650,6 +650,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,20 @@ class AppDisplay extends BaseAppView {
         this._removeNudge();
     }
 
+    _onDragCancelled(_overview, source) {
+        const view = _getViewFromIcon(source);
+
+        if (view instanceof FolderView)
+            return;
+
+        // Restore all icon positions, since they may have reflowed
+        // to different pages
+        for (const item of this._orderedItems) {
+            const [page, position] = this._getItemPosition(item);
+            this.moveItem(item, page, position);
+        }
+    }
+
     _canAccept(source) {
         return source instanceof AppViewItem;
     }


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