appDisplay: Remove icon from folder when dragging out

When dragging an icon outside of a folder dialog, there's a small delay
before the dialog pops down. If the icon is dropped during this delay,
the drag is cancelled, and the icon continues to be in the folder.

However, this behavior turned out to be problematic, and it was a common
point of failure that throwing icons outside folders wouldn't work.

Remove the icon from the folder when dragging it to outside the dialog.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3092

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1447
This commit is contained in:
Georges Basile Stavracas Neto 2020-09-24 16:06:01 -03:00 committed by Florian Müllner
parent 1acbdcc9b3
commit aaff88a6bb

View File

@ -2454,7 +2454,18 @@ var AppFolderDialog = GObject.registerClass({
this._setupDragMonitor(); this._setupDragMonitor();
} }
return DND.DragMotionResult.NO_DROP; return DND.DragMotionResult.MOVE_DROP;
}
acceptDrop(source) {
const appId = source.id;
this.popdown(() => {
this._view.removeApp(source);
this._appDisplay.selectApp(appId);
});
return true;
} }
toggle() { toggle() {