appDisplay: Separate app loading from filling the grid
At the moment when loading the applications, each app is inserted at its correct (alphabetical) position. Avoid this overhead by loading all apps first, then sort them once and fill the grid with the sorted actors. https://bugzilla.gnome.org/show_bug.cgi?id=694192
This commit is contained in:
parent
6e3e2d9f29
commit
65f96494f8
@ -89,12 +89,21 @@ const AlphabeticalView = new Lang.Class({
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
let itemIcon = this._createItemIcon(item);
|
let itemIcon = this._createItemIcon(item);
|
||||||
let pos = Util.insertSorted(this._allItems, item, this._compareItems);
|
this._allItems.push(item);
|
||||||
this._grid.addItem(itemIcon.actor, pos);
|
|
||||||
|
|
||||||
this._items[id] = itemIcon;
|
this._items[id] = itemIcon;
|
||||||
|
|
||||||
return itemIcon;
|
return itemIcon;
|
||||||
|
},
|
||||||
|
|
||||||
|
loadGrid: function() {
|
||||||
|
this._allItems.sort(this._compareItems);
|
||||||
|
|
||||||
|
for (let i = 0; i < this._allItems.length; i++) {
|
||||||
|
let id = this._getItemId(this._allItems[i]);
|
||||||
|
if (!id)
|
||||||
|
continue;
|
||||||
|
this._grid.addItem(this._items[id].actor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -276,6 +285,7 @@ const AppDisplay = new Lang.Class({
|
|||||||
_loadCategory(dir, this._view);
|
_loadCategory(dir, this._view);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this._view.loadGrid();
|
||||||
|
|
||||||
if (this._focusDummy) {
|
if (this._focusDummy) {
|
||||||
let focused = this._focusDummy.has_key_focus();
|
let focused = this._focusDummy.has_key_focus();
|
||||||
@ -367,6 +377,7 @@ const FolderIcon = new Lang.Class({
|
|||||||
this.view = new FolderView();
|
this.view = new FolderView();
|
||||||
this.view.actor.reactive = false;
|
this.view.actor.reactive = false;
|
||||||
_loadCategory(dir, this.view);
|
_loadCategory(dir, this.view);
|
||||||
|
this.view.loadGrid();
|
||||||
|
|
||||||
this.actor.connect('clicked', Lang.bind(this,
|
this.actor.connect('clicked', Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user