diff -r 38a48b756d80 -r ab3125bd8b5f ui/server/button.c --- a/ui/server/button.c Fri Dec 12 11:38:47 2025 +0100 +++ b/ui/server/button.c Fri Dec 12 12:00:34 2025 +0100 @@ -32,6 +32,7 @@ #include "args.h" #include "container.h" +#include "widget.h" cxmutstr ui_button_args_to_string(UiContext *ctx, UiButtonArgs *args) { CxBuffer buf; @@ -58,6 +59,7 @@ UIWIDGET ui_button_create(UiObject *obj, UiButtonArgs *args) { UiCallbackWidget *widget = cxZalloc(obj->ctx->allocator, sizeof(UiCallbackWidget)); widget->widget.obj = obj->widget->obj; + widget->widget.type = CX_STR("button"); widget->widget.args = ui_button_args_to_string(obj->ctx, args); widget->widget.serialize = (ui_serialize_func)ui_button_serialize; widget->callback = args->onclick; @@ -74,11 +76,9 @@ CxBuffer buf; cxBufferInit(&buf, NULL, 1024, NULL, CX_BUFFER_AUTO_EXTEND | CX_BUFFER_FREE_CONTENTS); - cxBufferPutString(&buf, "{\"type\":\"button\", \"obj\":\""); - cxBufferPutString(&buf, w->widget.obj->id.ptr); - cxBufferPutString(&buf, "\", \"id\":\""); - cxBufferPutString(&buf, w->widget.id.ptr); - cxBufferPutString(&buf, "\", \"args\":"); + cxBufferPutString(&buf, "{"); + ui_serialize_type_obj_id(&w->widget, &buf); + cxBufferPutString(&buf, ",\"args\":"); cxBufferPutString(&buf, w->widget.args.ptr); cxBufferPutString(&buf, "}\n");