From 6ba29130757f96e298d192ac83c91e89b4e7eda1 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 19 May 2020 21:31:45 -0300 Subject: [PATCH] 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 --- js/ui/appDisplay.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 54237fa88..f50d9158c 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -159,12 +159,16 @@ var BaseAppView = GObject.registerClass({ }); // Add new app icons + const { itemsPerPage } = this._grid; addedApps.forEach(icon => { let iconIndex = newApps.indexOf(icon); this._orderedItems.splice(iconIndex, 0, icon); - this._grid.addItem(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; @@ -445,7 +449,12 @@ class AppDisplay extends BaseAppView { let newIdx = Util.insertSorted(this._orderedItems, item, this._compareItems); 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); }