ui/server/window.c

changeset 985
93f07ccfd997
parent 984
2cf5e6d55013
child 986
6f7600c2b9e1
--- a/ui/server/window.c	Wed Dec 10 22:22:55 2025 +0100
+++ b/ui/server/window.c	Thu Dec 11 19:52:44 2025 +0100
@@ -27,6 +27,7 @@
  */
 
 #include "window.h"
+#include "container.h"
 
 #include "../common/object.h"
 
@@ -40,9 +41,11 @@
     window->widget.obj = ui_create_server_object(obj->ctx);
     window->widget.children = cxLinkedListCreate(a, NULL, CX_STORE_POINTERS);
     window->widget.serialize = (ui_serialize_func)ui_window_serialize;
+    window->widget.invisible = TRUE;
     window->title = cx_strdup_a(a, title);
     
     obj->widget = (UiWidget*)window;
+    uic_object_push_container(obj, ui_widget_container((UiWidget*)window));
     ui_reg_widget(obj->widget);
     
     return obj;
@@ -94,6 +97,19 @@
         cxBufferPutString(&buf, "\"");
     }
     
+    size_t numchildren = cxListSize(w->widget.children);
+    if(numchildren > 0) {
+        cxBufferPutString(&buf, ",\"children\":[");
+        CxIterator i = cxListIterator(w->widget.children);
+        cx_foreach(UiWidget *, child, i) {
+            cxmutstr child_str = child->serialize(child);
+            cxBufferWrite(child_str.ptr, 1, child_str.length, &buf);
+            if(i.index+1 < numchildren) {
+                cxBufferPut(&buf, ',');
+            }
+        }
+        cxBufferPutString(&buf, "]");
+    }
     
     cxBufferPutString(&buf, "}\n");
     

mercurial