2 Commits

Author SHA1 Message Date
20970e5aa9 Bump version 2021-02-11 09:32:37 -06:00
76eb1a85d5 Added focus event, elements can request focus 2021-02-11 09:31:44 -06:00
4 changed files with 45 additions and 1 deletions

View File

@@ -39,6 +39,8 @@ module CyberarmEngine
stylize
default_events
root.gui_state.request_focus(self) if @options[:autofocus]
end
def stylize
@@ -116,6 +118,7 @@ module CyberarmEngine
event(:hover)
event(:leave)
event(:focus)
event(:blur)
event(:changed)
@@ -293,6 +296,12 @@ module CyberarmEngine
@gui_state != nil
end
def focus(_)
warn "#{self.class}#focus was not overridden!"
:handled
end
def recalculate
raise "#{self.class}#recalculate was not overridden!"
end
@@ -311,5 +320,9 @@ module CyberarmEngine
def to_s
"#{self.class} x=#{x} y=#{y} width=#{width} height=#{height} value=#{value.is_a?(String) ? "\"#{value}\"" : value}"
end
def inspect
to_s
end
end
end

View File

@@ -212,6 +212,16 @@ module CyberarmEngine
:handled
end
def focus(sender)
@focus = true
@style.background_canvas.background = default(:active, :background)
@text.color = default(:active, :color)
window.text_input = @text_input
@text_input.caret_pos = @text_input.selection_start = @text_input.text.length
:handled
end
def blur(_sender)
@focus = false
@style.background_canvas.background = default(:background)

View File

@@ -66,6 +66,13 @@ module CyberarmEngine
@pending_recalculate_request = false
end
if @pending_focus_request
@pending_focus_request = false
self.focus = @pending_focus_element
@pending_focus_element.publish(:focus)
end
@menu&.update
super
@@ -215,6 +222,11 @@ module CyberarmEngine
@pending_recalculate_request = true
end
def request_focus(element)
@pending_focus_request = true
@pending_focus_element = element
end
def show_menu(list_box)
@menu = list_box
end
@@ -222,5 +234,14 @@ module CyberarmEngine
def hide_menu
@menu = nil
end
def to_s
# "#{self.class} children=#{@children.map { |c| c.to_s }}"
@root_container.to_s
end
def inspect
to_s
end
end
end

View File

@@ -1,4 +1,4 @@
module CyberarmEngine
NAME = "InDev".freeze
VERSION = "0.17.0".freeze
VERSION = "0.17.1".freeze
end