appDisplay: Factor out linear position calculation

When adding an item to the app grid, the item is added to
a sorted array. This is calculated by adding all visible
items in pages before the one being modified. Future commits
will need this to move items without reparenting them, so
factor this code into a separate function.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1447
This commit is contained in:
Georges Basile Stavracas Neto 2020-09-23 16:48:43 -03:00 committed by Florian Müllner
parent ab9aa5b1f2
commit bfd4d0f7aa

View File

@ -514,15 +514,10 @@ var BaseAppView = GObject.registerClass({
return -1; return -1;
} }
_addItem(item, page, position) { _getLinearPosition(page, position) {
let itemIndex = 0; let itemIndex = 0;
if (this._grid.nPages > 0) { if (this._grid.nPages > 0) {
// Append icons to the first page with empty slot, starting from
// the second page
if (this._grid.nPages > 1 && page === -1 && position === -1)
page = this._findBestPageToAppend();
const realPage = page === -1 ? this._grid.nPages - 1 : page; const realPage = page === -1 ? this._grid.nPages - 1 : page;
itemIndex = position === -1 itemIndex = position === -1
@ -535,6 +530,17 @@ var BaseAppView = GObject.registerClass({
} }
} }
return itemIndex;
}
_addItem(item, page, position) {
// Append icons to the first page with empty slot, starting from
// the second page
if (this._grid.nPages > 1 && page === -1 && position === -1)
page = this._findBestPageToAppend();
const itemIndex = this._getLinearPosition(page, position);
this._orderedItems.splice(itemIndex, 0, item); this._orderedItems.splice(itemIndex, 0, item);
this._items.set(item.id, item); this._items.set(item.id, item);
this._grid.addItem(item, page, position); this._grid.addItem(item, page, position);