From acc0792d17853a31f69ece1b2034476ddbf8c59e Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Wed, 1 Feb 2023 10:51:57 -0600 Subject: [PATCH] WIP: Fix crash when deleting a group, implemented scroll_into_view- adding/editing an item it will be snapped into view. --- lib/pages/editor.rb | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/pages/editor.rb b/lib/pages/editor.rb index 4a7d9fd..e393174 100644 --- a/lib/pages/editor.rb +++ b/lib/pages/editor.rb @@ -305,7 +305,7 @@ module TAC @variables_list.clear # Remove deleted action from list - container = find_element_by_tag(@groups_list, action.name) + container = find_element_by_tag(@groups_list, group.name) @groups_list.remove(container) update_list_children(@groups_list) @@ -448,12 +448,23 @@ module TAC end def scroll_into_view(item) + list_container = nil + item_container = nil + if item.is_a?(TAC::Config::Group) + list_container = @groups_list elsif item.is_a?(TAC::Config::Action) + list_container = @actions_list elsif item.is_a?(TAC::Config::Variable) + list_container = @variables_list else raise "Unsupported item type: #{item.class}" end + + item_container = find_element_by_tag(list_container, item.name) + + @scroll_into_view_list_container = list_container + @scroll_into_view_item_container = item_container end def populate_groups_list @@ -586,6 +597,27 @@ module TAC end end + def update + super + + list_container = @scroll_into_view_list_container + item_container = @scroll_into_view_item_container + + return unless list_container + return unless item_container + + unless item_container.x.between?(list_container.x, list_container.x + list_container.width) && + item_container.y.between?(list_container.y, list_container.y + list_container.height) + + list_container.scroll_top = (item_container.y + item_container.height) - item_container.height + + list_container.recalculate + end + + @scroll_into_view_list_container = nil + @scroll_into_view_item_container = nil + end + def button_down(id) super