diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 4d2bd7879..7140c0183 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -274,6 +274,35 @@ var BaseAppView = GObject.registerClass({ }); } + _addItem(item, page, position) { + let itemIndex = 0; + + if (this._grid.nPages > 0) { + const realPage = page === -1 ? this._grid.nPages - 1 : page; + + itemIndex = position === -1 + ? this._grid.getItemsAtPage(realPage).filter(c => c.visible).length - 1 + : position; + + for (let i = 0; i < realPage; i++) { + const pageItems = this._grid.getItemsAtPage(i).filter(c => c.visible); + itemIndex += pageItems.length; + } + } + + this._orderedItems.splice(itemIndex, 0, item); + this._items.set(item.id, item); + this._grid.addItem(item, page, position); + } + + _removeItem(item) { + const iconIndex = this._orderedItems.indexOf(item); + + this._orderedItems.splice(iconIndex, 1); + this._items.delete(item.id); + this._grid.removeItem(item); + } + _redisplay() { let oldApps = this._orderedItems.slice(); let oldAppIds = oldApps.map(icon => icon.id); @@ -286,12 +315,8 @@ var BaseAppView = GObject.registerClass({ // Remove old app icons removedApps.forEach(icon => { - let iconIndex = this._orderedItems.indexOf(icon); - let id = icon.id; - - this._orderedItems.splice(iconIndex, 1); + this._removeItem(icon); icon.destroy(); - this._items.delete(id); }); // Add new app icons