| 39 const CxAllocator *a = obj->ctx->allocator; |
39 const CxAllocator *a = obj->ctx->allocator; |
| 40 |
40 |
| 41 UiWindow *window = cxZalloc(a, sizeof(UiWindow)); |
41 UiWindow *window = cxZalloc(a, sizeof(UiWindow)); |
| 42 window->widget.obj = ui_create_server_object(obj->ctx); |
42 window->widget.obj = ui_create_server_object(obj->ctx); |
| 43 window->widget.type = cx_str(type); |
43 window->widget.type = cx_str(type); |
| 44 window->widget.children = cxLinkedListCreate(a, NULL, CX_STORE_POINTERS); |
44 window->widget.children = cxLinkedListCreate(a, CX_STORE_POINTERS); |
| 45 window->widget.serialize = (ui_serialize_func)ui_window_serialize; |
45 window->widget.serialize = (ui_serialize_func)ui_window_serialize; |
| 46 window->widget.invisible = TRUE; |
46 window->widget.invisible = TRUE; |
| 47 window->title = cx_strdup_a(a, title); |
47 window->title = cx_strdup_a(a, title); |
| 48 |
48 |
| 49 obj->widget = (UiWidget*)window; |
49 obj->widget = (UiWidget*)window; |
| 70 } |
70 } |
| 71 |
71 |
| 72 |
72 |
| 73 cxmutstr ui_window_serialize(UiWindow *w) { |
73 cxmutstr ui_window_serialize(UiWindow *w) { |
| 74 CxBuffer buf; |
74 CxBuffer buf; |
| 75 cxBufferInit(&buf, NULL, 1024, NULL, CX_BUFFER_AUTO_EXTEND | CX_BUFFER_FREE_CONTENTS); |
75 cxBufferInit(&buf, NULL, NULL, 1024, CX_BUFFER_AUTO_EXTEND | CX_BUFFER_FREE_CONTENTS); |
| 76 |
76 |
| 77 cxBufferPutString(&buf, "{"); |
77 cxBufferPutString(&buf, "{"); |
| 78 ui_serialize_type_obj_id(&w->widget, &buf); |
78 ui_serialize_type_obj_id(&w->widget, &buf); |
| 79 |
79 |
| 80 if(w->title.ptr) { |
80 if(w->title.ptr) { |