diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js index 12a4aed9b..a6a42b615 100644 --- a/js/ui/iconGrid.js +++ b/js/ui/iconGrid.js @@ -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