mirror of
https://github.com/Insality/druid.git
synced 2025-06-27 18:37:44 +02:00
Fix scroll_to_index in data_list
This commit is contained in:
parent
4f621274c1
commit
c3f1b38a8a
@ -203,7 +203,10 @@ end
|
|||||||
-- @usage scroll:scroll_to(vmath.vector3(0), true)
|
-- @usage scroll:scroll_to(vmath.vector3(0), true)
|
||||||
function Scroll.scroll_to(self, point, is_instant)
|
function Scroll.scroll_to(self, point, is_instant)
|
||||||
local b = self.available_pos
|
local b = self.available_pos
|
||||||
local target = vmath.vector3(-point.x, -point.y, 0)
|
local target = vmath.vector3(
|
||||||
|
self._is_horizontal_scroll and -point.x or self.target_position.x,
|
||||||
|
self._is_vertical_scroll and -point.y or self.target_position.y,
|
||||||
|
0)
|
||||||
target.x = helper.clamp(target.x, b.x, b.z)
|
target.x = helper.clamp(target.x, b.x, b.z)
|
||||||
target.y = helper.clamp(target.y, b.y, b.w)
|
target.y = helper.clamp(target.y, b.y, b.w)
|
||||||
|
|
||||||
@ -690,7 +693,10 @@ function Scroll._update_size(self)
|
|||||||
|
|
||||||
self.available_pos_extra = get_border_vector(view_border - content_border_extra, self._offset)
|
self.available_pos_extra = get_border_vector(view_border - content_border_extra, self._offset)
|
||||||
self.available_size_extra = get_size_vector(self.available_pos_extra)
|
self.available_size_extra = get_size_vector(self.available_pos_extra)
|
||||||
self:_update_params()
|
|
||||||
|
self:_set_scroll_position(self.position)
|
||||||
|
self.target_position.x = self.position.x
|
||||||
|
self.target_position.y = self.position.y
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -178,9 +178,13 @@ end
|
|||||||
-- @tparam DataList self
|
-- @tparam DataList self
|
||||||
-- @tparam number index
|
-- @tparam number index
|
||||||
function DataList.scroll_to_index(self, index)
|
function DataList.scroll_to_index(self, index)
|
||||||
self.top_index = helper.clamp(index, 1, #self._data)
|
local target = helper.clamp(index, 1, #self._data)
|
||||||
|
self.top_index = target
|
||||||
self:_refresh()
|
self:_refresh()
|
||||||
self.scroll.on_scroll:trigger(self:get_context(), self)
|
|
||||||
|
if self._data_visual[target] then
|
||||||
|
self.scroll:scroll_to(gui.get_position(self._data_visual[target].node), true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -241,8 +245,8 @@ function DataList._check_elements(self)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self:_check_elements_from(self.top_index + 1, 1)
|
|
||||||
self:_check_elements_from(self.top_index, -1)
|
self:_check_elements_from(self.top_index, -1)
|
||||||
|
self:_check_elements_from(self.top_index + 1, 1)
|
||||||
|
|
||||||
for index, data in pairs(self._data_visual) do
|
for index, data in pairs(self._data_visual) do
|
||||||
self.top_index = math.min(self.top_index or index, index)
|
self.top_index = math.min(self.top_index or index, index)
|
||||||
|
@ -34,7 +34,7 @@ function init(self)
|
|||||||
-- Disable slider input, now we can not use slider with data list
|
-- Disable slider input, now we can not use slider with data list
|
||||||
self.slider_simple:set_input_enabled(false)
|
self.slider_simple:set_input_enabled(false)
|
||||||
self.data_list_simple.on_scroll_progress_change:subscribe(function(_, progress)
|
self.data_list_simple.on_scroll_progress_change:subscribe(function(_, progress)
|
||||||
self.slider_simple:set(progress)
|
self.slider_simple:set(progress, true)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
self.druid:new_button("button_simple_first/button", function()
|
self.druid:new_button("button_simple_first/button", function()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user