[gnome-shell/gbsneto/custom-icon-positions: 16/28] appDisplay: Create app folder where the drop happened



commit acdd84d5b99db6e31a26824479656582b9a74599
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue May 26 22:29:29 2020 -0300

    appDisplay: Create app folder where the drop happened
    
    Create the app folder where the icon we drop at is located. This
    ensures the folder icon doesn't go into the last page, hidden and
    solitary.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

 js/ui/appDisplay.js | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index f4c3e76a33..c13811c80a 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -1128,6 +1128,11 @@ class AppDisplay extends BaseAppView {
             return false;
         }
 
+        // 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] =
+            this._grid.getItemPosition(this._items.get(apps[0]));
+
         let appItems = apps.map(id => this._items.get(id).app);
         let folderName = _findBestFolderName(appItems);
         if (!folderName)
@@ -1138,7 +1143,12 @@ class AppDisplay extends BaseAppView {
         newFolderSettings.set_strv('apps', apps);
         newFolderSettings.apply();
 
-        this.selectApp(newFolderId);
+        this._redisplay();
+
+        // Move the folder to where the icon target icon was
+        const folderItem = this._items.get(newFolderId);
+        this._moveItem(folderItem, folderPage, folderPosition);
+        this._savePages();
 
         return true;
     }


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