appDisplay: Add items in order

Add app icons to the exact page and position they're located
instead of always appending. This will be useful later when
custom icon positions are in place.

For now, it assumes pages are always filled, which is true,
but this will also change with custom icon positions.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271
This commit is contained in:
Georges Basile Stavracas Neto 2020-05-19 21:31:45 -03:00
parent 75c4e1cd63
commit 6ba2913075

View File

@ -159,12 +159,16 @@ var BaseAppView = GObject.registerClass({
}); });
// Add new app icons // Add new app icons
const { itemsPerPage } = this._grid;
addedApps.forEach(icon => { addedApps.forEach(icon => {
let iconIndex = newApps.indexOf(icon); let iconIndex = newApps.indexOf(icon);
this._orderedItems.splice(iconIndex, 0, icon); this._orderedItems.splice(iconIndex, 0, icon);
this._grid.addItem(icon);
this._items.set(icon.id, icon); this._items.set(icon.id, icon);
const page = Math.floor(iconIndex / itemsPerPage);
const position = iconIndex % itemsPerPage;
this._grid.addItem(icon, page, position);
}); });
this._viewIsReady = true; this._viewIsReady = true;
@ -445,7 +449,12 @@ class AppDisplay extends BaseAppView {
let newIdx = Util.insertSorted(this._orderedItems, item, this._compareItems); let newIdx = Util.insertSorted(this._orderedItems, item, this._compareItems);
this._grid.removeItem(item); this._grid.removeItem(item);
this._grid.addItem(item, -1, newIdx);
const { itemsPerPage } = this._grid;
const page = Math.floor(newIdx / itemsPerPage);
const position = newIdx % itemsPerPage;
this._grid.addItem(item, page, position);
this.selectApp(item.id); this.selectApp(item.id);
} }