folderView: Allow moving to specific position
As of now, the only way to add an app icon to a folder is by dragging it to the folder icon itself. Even though we allow opening the folder popup when hovering the icon, dropping an app icon there wouldn't work. Make the folder view add the app icon to it's GSettings key (which will trigger _redisplay() and will show the new icon) when dropping to a specific position. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/603
This commit is contained in:
parent
854922866b
commit
717ec0f8a4
@ -1440,13 +1440,28 @@ var FolderView = class FolderView extends BaseAppView {
|
||||
|
||||
acceptDrop(source, actor, x, y, time) {
|
||||
let [index, dragLocation] = this.canDropAt(x, y);
|
||||
let sourceIndex = this._allItems.indexOf(source);
|
||||
let success = index != -1;
|
||||
|
||||
source.undoScaleAndFade();
|
||||
|
||||
if (success)
|
||||
this.moveItem(source, index);
|
||||
if (success) {
|
||||
// If we're dragging from another folder, remove from the old folder
|
||||
if (source.view != this &&
|
||||
(source instanceof AppIcon) &&
|
||||
(source.view instanceof FolderView)) {
|
||||
source.view.removeApp(source.app);
|
||||
}
|
||||
|
||||
// If the new app icon is not in this folder yet, add it; otherwise,
|
||||
// just move the icon to the new position
|
||||
let folderApps = this._folder.get_strv('apps');
|
||||
if (!folderApps.includes(source.id)) {
|
||||
folderApps.splice(index, 0, source.id);
|
||||
this._folder.set_strv('apps', folderApps);
|
||||
} else {
|
||||
this.moveItem(source, index);
|
||||
}
|
||||
}
|
||||
|
||||
this.removeNudges();
|
||||
return success;
|
||||
|
Loading…
Reference in New Issue
Block a user