diff --git a/lib/cyberarm_engine/ui/elements/button.rb b/lib/cyberarm_engine/ui/elements/button.rb index 75e0a01..f2189ff 100644 --- a/lib/cyberarm_engine/ui/elements/button.rb +++ b/lib/cyberarm_engine/ui/elements/button.rb @@ -86,9 +86,12 @@ module CyberarmEngine old_width = width old_height = height - recalculate - root.gui_state.request_recalculate if old_width != width || old_height != height + if old_width != width || old_height != height + root.gui_state.request_recalculate + else + recalculate + end publish(:changed, self.value) end diff --git a/lib/cyberarm_engine/ui/elements/container.rb b/lib/cyberarm_engine/ui/elements/container.rb index 1d1e5ef..c0a9611 100644 --- a/lib/cyberarm_engine/ui/elements/container.rb +++ b/lib/cyberarm_engine/ui/elements/container.rb @@ -45,7 +45,7 @@ module CyberarmEngine root.gui_state.request_recalculate end - def apend(&block) + def append(&block) old_container = $__current_container__ $__current_container__ = self @@ -194,9 +194,8 @@ module CyberarmEngine if @scroll_position.y < 0 @scroll_position.y += @scroll_speed @scroll_position.y = 0 if @scroll_position.y > 0 - # recalculate - root.gui_state.request_recalculate_for(self) + root.gui_state.request_recalculate_for(self) return :handled end @@ -210,9 +209,8 @@ module CyberarmEngine if @scroll_position.y.abs < max_scroll_height @scroll_position.y -= @scroll_speed @scroll_position.y = -max_scroll_height if @scroll_position.y.abs > max_scroll_height - # recalculate - root.gui_state.request_recalculate_for(self) + root.gui_state.request_recalculate_for(self) return :handled end diff --git a/lib/cyberarm_engine/ui/elements/text_block.rb b/lib/cyberarm_engine/ui/elements/text_block.rb index 45da159..f4d88f5 100644 --- a/lib/cyberarm_engine/ui/elements/text_block.rb +++ b/lib/cyberarm_engine/ui/elements/text_block.rb @@ -142,9 +142,12 @@ module CyberarmEngine old_width = width old_height = height - recalculate - root.gui_state.request_recalculate if old_width != width || old_height != height + if old_width != width || old_height != height + root.gui_state.request_recalculate + else + recalculate + end publish(:changed, self.value) end diff --git a/lib/cyberarm_engine/ui/gui_state.rb b/lib/cyberarm_engine/ui/gui_state.rb index 0d2b59a..3f8369c 100644 --- a/lib/cyberarm_engine/ui/gui_state.rb +++ b/lib/cyberarm_engine/ui/gui_state.rb @@ -75,10 +75,10 @@ module CyberarmEngine @root_container.recalculate @pending_recalculate_request = false - @pending_element_recalculate_requests.clear # GUI has already been recalculated end @pending_element_recalculate_requests.each(&:recalculate) + @pending_element_recalculate_requests.clear if @pending_focus_request @pending_focus_request = false