[gnome-shell/gbsneto/icon-grid-dnd-fixes: 8/16] appDisplay: Adjust folder position




commit 17095928117be1648dc0a68313251e842dd4842c
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Sep 24 12:00:03 2020 -0300

    appDisplay: Adjust folder position
    
    If you try and drop an icon that's in the same page, but before the
    drop target, it'll be one position ahead of where it should be -
    because we just removed one icon before the target position.
    
    Adjust the final position of the to-be-created folder.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1447

 js/ui/appDisplay.js | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 6011d72ee6..b704a54601 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -1314,9 +1314,18 @@ class AppDisplay extends BaseAppView {
 
         // The hovered AppIcon always passes its own id as the first
         // one, and this is where we want the folder to be created
-        const [folderPage, folderPosition] =
+        let [folderPage, folderPosition] =
             this._grid.getItemPosition(this._items.get(apps[0]));
 
+        // Adjust the final position
+        folderPosition -= apps.reduce((counter, appId) => {
+            const [page, position] =
+                this._grid.getItemPosition(this._items.get(appId));
+            if (page === folderPage && position < folderPosition)
+                counter++;
+            return counter;
+        }, 0);
+
         let appItems = apps.map(id => this._items.get(id).app);
         let folderName = _findBestFolderName(appItems);
         if (!folderName)


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