appDisplay: Ensure icons always are at the correct position

When redisplaying, we currently only remove and add icons, but
never adjust the position of already added icons. If the icon
position changed, it wouldn't be reflected on the icon grid.

Make sure to move already added icons.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284
This commit is contained in:
Georges Basile Stavracas Neto 2020-06-23 12:18:56 -03:00 committed by Florian Müllner
parent 578ae29ed2
commit cceb74706a

View File

@ -333,10 +333,13 @@ var BaseAppView = GObject.registerClass({
icon.destroy();
});
// Add new app icons
addedApps.forEach(icon => {
const [page, position] = this._getItemPosition(icon, newApps);
this._addItem(icon, page, position);
// Add new app icons, or move existing ones
newApps.forEach(icon => {
const [page, position] = this._getItemPosition(icon);
if (addedApps.includes(icon))
this._addItem(icon, page, position);
else if (page !== -1 && position !== -1)
this._moveItem(icon, page, position);
});
this._viewIsReady = true;