From 186ad220cc95c967f7d524dcb9b47d899ee281cd Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Wed, 4 Jan 2023 20:17:49 -0600 Subject: [PATCH] Added more triggers for repainting --- lib/cyberarm_engine/ui/element.rb | 2 ++ lib/cyberarm_engine/ui/elements/edit_line.rb | 6 ++++++ lib/cyberarm_engine/ui/elements/progress.rb | 4 ++++ lib/cyberarm_engine/ui/gui_state.rb | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/cyberarm_engine/ui/element.rb b/lib/cyberarm_engine/ui/element.rb index f23addf..64d439b 100644 --- a/lib/cyberarm_engine/ui/element.rb +++ b/lib/cyberarm_engine/ui/element.rb @@ -258,6 +258,8 @@ module CyberarmEngine end def enabled=(boolean) + root.gui_state.request_repaint if @enabled != boolean + @enabled = boolean recalculate diff --git a/lib/cyberarm_engine/ui/elements/edit_line.rb b/lib/cyberarm_engine/ui/elements/edit_line.rb index 4dbeef8..15bc1ea 100644 --- a/lib/cyberarm_engine/ui/elements/edit_line.rb +++ b/lib/cyberarm_engine/ui/elements/edit_line.rb @@ -80,16 +80,22 @@ module CyberarmEngine @show_caret = true @caret_last_interval = Gosu.milliseconds + root.gui_state.request_repaint + publish(:changed, value) end if @last_caret_position != @text_input.caret_pos @last_caret_position = @text_input.caret_pos + root.gui_state.request_repaint + @show_caret = true @caret_last_interval = Gosu.milliseconds end if Gosu.milliseconds >= @caret_last_interval + @caret_interval + root.gui_state.request_repaint + @caret_last_interval = Gosu.milliseconds @show_caret = !@show_caret diff --git a/lib/cyberarm_engine/ui/elements/progress.rb b/lib/cyberarm_engine/ui/elements/progress.rb index 34114cc..2629343 100644 --- a/lib/cyberarm_engine/ui/elements/progress.rb +++ b/lib/cyberarm_engine/ui/elements/progress.rb @@ -77,9 +77,13 @@ module CyberarmEngine def value=(decimal) raise "value must be number" unless decimal.is_a?(Numeric) + old_value = @fraction + @fraction = decimal.clamp(0.0, 1.0) update_background + root.gui_state.request_repaint if @fraction != old_value + publish(:changed, @fraction) @fraction end diff --git a/lib/cyberarm_engine/ui/gui_state.rb b/lib/cyberarm_engine/ui/gui_state.rb index 957acce..95054c4 100644 --- a/lib/cyberarm_engine/ui/gui_state.rb +++ b/lib/cyberarm_engine/ui/gui_state.rb @@ -57,7 +57,7 @@ module CyberarmEngine @menu.draw end - if @tip.value.length.positive? + if @tip && @tip.value.length.positive? Gosu.flush @tip.draw