appDisplay: Move findBestPageToAppend() behavior to IconGrid
This behavior makes more sense to have in the iconGrid itself: When a page is filled up with items, the new item should never go to the start of the next page, but always to next empty slot. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2348>
This commit is contained in:
@ -798,6 +798,19 @@ var IconGridLayout = GObject.registerClass({
|
||||
this._shouldEaseItems = false;
|
||||
}
|
||||
|
||||
_findBestPageToAppend(startPage) {
|
||||
const itemsPerPage = this.columnsPerPage * this.rowsPerPage;
|
||||
|
||||
for (let i = startPage; i < this._pages.length; i++) {
|
||||
const visibleItems = this._pages[i].visibleChildren;
|
||||
|
||||
if (visibleItems.length < itemsPerPage)
|
||||
return i;
|
||||
}
|
||||
|
||||
return this._pages.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* addItem:
|
||||
* @param {Clutter.Actor} item: item to append to the grid
|
||||
@ -822,6 +835,9 @@ var IconGridLayout = GObject.registerClass({
|
||||
if (!this._container)
|
||||
return;
|
||||
|
||||
if (page !== -1 && index === -1)
|
||||
page = this._findBestPageToAppend(page);
|
||||
|
||||
this._shouldEaseItems = true;
|
||||
|
||||
this._container.add_child(item);
|
||||
@ -853,6 +869,10 @@ var IconGridLayout = GObject.registerClass({
|
||||
this._shouldEaseItems = true;
|
||||
|
||||
this._removeItemData(item);
|
||||
|
||||
if (newPage !== -1 && newPosition === -1)
|
||||
newPage = this._findBestPageToAppend(newPage);
|
||||
|
||||
this._addItemToPage(item, newPage, newPosition);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user