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:
parent
ab9aa5b1f2
commit
bfd4d0f7aa
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user