[gnome-shell/gbsneto/custom-icon-positions: 15/38] appDisplay: Factor out item addition and removal methods



commit 3f9ba9355bfffb2acfefb9a02521406e93f9d38a
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue May 26 10:58:17 2020 -0300

    appDisplay: Factor out item addition and removal methods
    
    It'll be useful later.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

 js/ui/appDisplay.js | 35 ++++++++++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 5 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 978c411c26..ee9dbc9c6f 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]