mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2026-03-22 03:56:13 +00:00
Make changing an element's styles trigger element to re-stylize
This commit is contained in:
@@ -333,6 +333,11 @@ module CyberarmEngine
|
|||||||
|
|
||||||
def update
|
def update
|
||||||
recalculate_if_size_changed
|
recalculate_if_size_changed
|
||||||
|
|
||||||
|
if @style.dirty?
|
||||||
|
@style.mark_clean!
|
||||||
|
stylize
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def button_down(id)
|
def button_down(id)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ module CyberarmEngine
|
|||||||
class StyleData
|
class StyleData
|
||||||
def initialize(hash = {})
|
def initialize(hash = {})
|
||||||
@hash = hash
|
@hash = hash
|
||||||
|
@dirty = false
|
||||||
end
|
end
|
||||||
|
|
||||||
%i[
|
%i[
|
||||||
@@ -38,6 +39,8 @@ module CyberarmEngine
|
|||||||
@hash[item]
|
@hash[item]
|
||||||
end
|
end
|
||||||
define_method(:"#{item}=") do |value|
|
define_method(:"#{item}=") do |value|
|
||||||
|
@dirty = true if @hash[item] != value
|
||||||
|
|
||||||
@hash[item] = value
|
@hash[item] = value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -46,6 +49,14 @@ module CyberarmEngine
|
|||||||
def default
|
def default
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def dirty?
|
||||||
|
@dirty
|
||||||
|
end
|
||||||
|
|
||||||
|
def mark_clean!
|
||||||
|
@dirty = false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Style < StyleData
|
class Style < StyleData
|
||||||
@@ -58,7 +69,18 @@ module CyberarmEngine
|
|||||||
@active = StyleData.new(hash[:active] || {})
|
@active = StyleData.new(hash[:active] || {})
|
||||||
@disabled = StyleData.new(hash[:disabled] || {})
|
@disabled = StyleData.new(hash[:disabled] || {})
|
||||||
|
|
||||||
|
@substyles = [@hover, @active, @disabled]
|
||||||
|
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def dirty?
|
||||||
|
@dirty || @substyles.any?(&:dirty?)
|
||||||
|
end
|
||||||
|
|
||||||
|
def mark_clean!
|
||||||
|
@substyles.each(&:mark_clean!)
|
||||||
|
@dirty = false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user