aboutsummaryrefslogtreecommitdiff
path: root/kscurses/ui/parent.jai
diff options
context:
space:
mode:
authordam <dam@gudinoff>2023-08-17 20:28:47 +0100
committerdam <dam@gudinoff>2023-08-17 20:28:47 +0100
commit709879ee56d31fe543a0ad882713bd4e3d17d2d2 (patch)
tree12a35282bdd0f1f8a2159ade147944c89254db24 /kscurses/ui/parent.jai
parentfa1b8ea54646f1a0f3eadef33e3a660b875cc1ff (diff)
downloadtask-time-tracker-709879ee56d31fe543a0ad882713bd4e3d17d2d2.tar.zst
task-time-tracker-709879ee56d31fe543a0ad882713bd4e3d17d2d2.zip
Added kscurses and testing program.
Diffstat (limited to 'kscurses/ui/parent.jai')
-rw-r--r--kscurses/ui/parent.jai33
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