From ab3f5f8e314c56a35c771bfc50e42d8825e43bc0 Mon Sep 17 00:00:00 2001 From: Insality Date: Sat, 23 Oct 2021 15:16:38 +0300 Subject: [PATCH] #104 Add is_instant flag to add/remove Static and Dynamic Grid components --- druid/base/static_grid.lua | 10 ++++++---- druid/extended/dynamic_grid.lua | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/druid/base/static_grid.lua b/druid/base/static_grid.lua index 4afb2f1..6e83082 100644 --- a/druid/base/static_grid.lua +++ b/druid/base/static_grid.lua @@ -180,7 +180,8 @@ end -- @tparam node item Gui node -- @tparam[opt] number index The item position. By default add as last item -- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT -function StaticGrid.add(self, item, index, shift_policy) +-- @tparam[opt=false] boolean is_instance If true, update node positions instantly +function StaticGrid.add(self, item, index, shift_policy, is_instant) shift_policy = shift_policy or const.SHIFT.RIGHT index = index or ((self.last_index or 0) + 1) @@ -206,7 +207,7 @@ function StaticGrid.add(self, item, index, shift_policy) gui.set_position(item, self:get_pos(index) + self:_get_zero_offset()) - self:_update_pos() + self:_update_pos(is_instant) self.on_add_item:trigger(self:get_context(), item, index) self.on_change_items:trigger(self:get_context(), index) @@ -217,8 +218,9 @@ end -- @tparam StaticGrid self -- @tparam number index The grid node index to remove -- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT +-- @tparam[opt=false] boolean is_instance If true, update node positions instantly -- @treturn Node The deleted gui node from grid -function StaticGrid.remove(self, index, shift_policy) +function StaticGrid.remove(self, index, shift_policy, is_instant) shift_policy = shift_policy or const.SHIFT.RIGHT assert(self.nodes[index], "No grid item at given index " .. index) @@ -236,7 +238,7 @@ function StaticGrid.remove(self, index, shift_policy) end end - self:_update() + self:_update(is_instant) self.on_remove_item:trigger(self:get_context(), index) self.on_change_items:trigger(self:get_context(), index) diff --git a/druid/extended/dynamic_grid.lua b/druid/extended/dynamic_grid.lua index b78fc91..cc83204 100644 --- a/druid/extended/dynamic_grid.lua +++ b/druid/extended/dynamic_grid.lua @@ -140,7 +140,8 @@ end -- @tparam node node Gui node -- @tparam[opt] number index The node position. By default add as last node -- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT -function DynamicGrid.add(self, node, index, shift_policy) +-- @tparam[opt=false] boolean is_instance If true, update node positions instantly +function DynamicGrid.add(self, node, index, shift_policy, is_instant) shift_policy = shift_policy or const.SHIFT.RIGHT local delta = shift_policy -- -1 or 1 or 0 @@ -170,7 +171,7 @@ function DynamicGrid.add(self, node, index, shift_policy) end -- Sync grid data - self:_update() + self:_update(is_instant) self.on_add_item:trigger(self:get_context(), node, index) self.on_change_items:trigger(self:get_context(), index) @@ -181,8 +182,9 @@ end -- @tparam DynamicGrid self -- @tparam number index The grid node index to remove -- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT +-- @tparam[opt=false] boolean is_instance If true, update node positions instantly -- @treturn Node The deleted gui node from grid -function DynamicGrid.remove(self, index, shift_policy) +function DynamicGrid.remove(self, index, shift_policy, is_instant) shift_policy = shift_policy or const.SHIFT.RIGHT local delta = shift_policy -- -1 or 1 or 0 @@ -204,7 +206,7 @@ function DynamicGrid.remove(self, index, shift_policy) end -- Sync grid data - self:_update() + self:_update(is_instant) self.on_remove_item:trigger(self:get_context(), index) self.on_change_items:trigger(self:get_context(), index)