From a92e4e6ae09116eae5ba940bd03a18d1c129b77b Mon Sep 17 00:00:00 2001 From: Insality Date: Sun, 12 Jul 2020 12:30:13 +0300 Subject: [PATCH] Add grid update position function --- druid/base/grid.lua | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/druid/base/grid.lua b/druid/base/grid.lua index c295a4a..5f16442 100644 --- a/druid/base/grid.lua +++ b/druid/base/grid.lua @@ -49,6 +49,8 @@ function M.init(self, parent, element, in_row) self.on_remove_item = Event() self.on_clear = Event() self.on_update_positions = Event() + + self._set_position_function = gui.set_position end @@ -87,10 +89,15 @@ local function get_pos(self, index) end -local function update_pos(self) +local function update_pos(self, is_instant) for i = 1, #self.nodes do local node = self.nodes[i] - gui.set_position(node, get_pos(self, i)) + + if is_instant then + gui.set_position(node, get_pos(self, i)) + else + self._set_position_function(node, get_pos(self, i)) + end end self.on_update_positions:trigger(self:get_context()) @@ -157,6 +164,15 @@ function M.get_all_pos(self) end +--- Chane set position function for grid nodes. It will call on +-- update poses on grid elements. Default: gui.set_position +-- @function grid:set_position_function +-- @tparam function callback Function on node set position +function M.set_position_function(self, callback) + self._set_position_function = callback or gui.set_position +end + + --- Clear grid nodes array. GUI nodes will be not deleted! -- If you want to delete GUI nodes, use grid.nodes array before grid:clear -- @function grid:clear