diff options
Diffstat (limited to 'kscurses/ui/parent.jai')
| -rw-r--r-- | kscurses/ui/parent.jai | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/kscurses/ui/parent.jai b/kscurses/ui/parent.jai new file mode 100644 index 0000000..af459de --- /dev/null +++ b/kscurses/ui/parent.jai @@ -0,0 +1,33 @@ +UI_Parent :: struct { + #as using base : UI_Elem; + active_element : *UI_Elem; +} + +__last_set : *UI_Elem; + +set_active_recursive :: (ui_elem : *UI_Elem) { + assert(!__last_set); __last_set = ui_elem; + assert(ui_elem.cursor_state == .OUTSIDE); ui_elem.cursor_state = .ON; + + current := ui_elem; + while 1 { + parent := current.parent; + if !parent break; + assert(!parent.active_element); + parent.active_element = current; + current = xx parent; + } +} +unset_active_recursive :: (ui_elem : *UI_Elem) { + assert(__last_set == ui_elem); __last_set = null; + assert(ui_elem.cursor_state == .ON); ui_elem.cursor_state = .OUTSIDE; + + current := ui_elem; + while 1 { + parent := current.parent; + if !parent break; + assert(parent.active_element == current); + parent.active_element = null; + current = xx parent; + } +}
\ No newline at end of file |
