iconGrid: Add moveItem
This new public API moves items without removing and readding
them, which allows us to avoid some tricky behavior. Noticeably,
following the original design described at 3555550d5
, the new
IconGridLayout.moveItem() method does not call `layout_changed`.
This is done by IconGrid itself, queueing a relayout.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1447
This commit is contained in:
parent
bfd4d0f7aa
commit
ffdff07eaf
@ -847,6 +847,22 @@ var IconGridLayout = GObject.registerClass({
|
||||
this.addItem(item);
|
||||
}
|
||||
|
||||
/**
|
||||
* moveItem:
|
||||
* @param {Clutter.Actor} item: item to move
|
||||
* @param {int} newPage: new page of the item
|
||||
* @param {int} newPosition: new page of the item
|
||||
*
|
||||
* Moves @item to the grid. @item must be part of the grid.
|
||||
*/
|
||||
moveItem(item, newPage, newPosition) {
|
||||
if (!this._items.has(item))
|
||||
throw new Error(`Item ${item} is not part of the IconGridLayout`);
|
||||
|
||||
this._removeItemData(item);
|
||||
this._addItemToPage(item, newPage, newPosition);
|
||||
}
|
||||
|
||||
/**
|
||||
* removeItem:
|
||||
* @param {Clutter.Actor} item: item to remove from the grid
|
||||
@ -1422,6 +1438,19 @@ var IconGrid = GObject.registerClass({
|
||||
this.layout_manager.appendItem(item);
|
||||
}
|
||||
|
||||
/**
|
||||
* moveItem:
|
||||
* @param {Clutter.Actor} item: item to move
|
||||
* @param {int} newPage: new page of the item
|
||||
* @param {int} newPosition: new page of the item
|
||||
*
|
||||
* Moves @item to the grid. @item must be part of the grid.
|
||||
*/
|
||||
moveItem(item, newPage, newPosition) {
|
||||
this.layout_manager.moveItem(item, newPage, newPosition);
|
||||
this.queue_relayout();
|
||||
}
|
||||
|
||||
/**
|
||||
* removeItem:
|
||||
* @param {Clutter.Actor} item: item to remove from the grid
|
||||
|
Loading…
Reference in New Issue
Block a user