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
This commit is contained in:
Georges Basile Stavracas Neto 2020-05-26 22:29:29 -03:00 committed by Florian Müllner
parent 783dbe2aa9
commit b64ce217e4

View File

@ -1126,6 +1126,11 @@ class AppDisplay extends BaseAppView {
return false; 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 appItems = apps.map(id => this._items.get(id).app);
let folderName = _findBestFolderName(appItems); let folderName = _findBestFolderName(appItems);
if (!folderName) if (!folderName)
@ -1136,7 +1141,12 @@ class AppDisplay extends BaseAppView {
newFolderSettings.set_strv('apps', apps); newFolderSettings.set_strv('apps', apps);
newFolderSettings.apply(); 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; return true;
} }