--- a/ui/motif/button.c Sat Apr 05 17:57:04 2025 +0200 +++ b/ui/motif/button.c Sun Jul 20 22:04:39 2025 +0200 @@ -41,7 +41,7 @@ #include <Xm/XmAll.h> -UIWIDGET ui_button_create(UiObject* obj, UiButtonArgs args) { +UIWIDGET ui_button_create(UiObject* obj, UiButtonArgs *args) { Arg xargs[16]; int n = 0; @@ -51,22 +51,22 @@ Widget parent = ctn->prepare(ctn, xargs, &n); XmString label = NULL; - if(args.label) { - label = XmStringCreateLocalized((char*)args.label); + if(args->label) { + label = XmStringCreateLocalized((char*)args->label); XtSetArg(xargs[n], XmNlabelString, label); n++; } - char *name = args.name ? (char*)args.name : "button"; + char *name = args->name ? (char*)args->name : "button"; Widget button = XmCreatePushButton(parent, name, xargs, n); XtManageChild(button); ctn->add(ctn, button); - ui_set_widget_groups(obj->ctx, button, args.groups); + ui_set_widget_groups(obj->ctx, button, args->groups); - if(args.onclick) { + if(args->onclick) { UiEventData *eventdata = malloc(sizeof(UiEventData)); - eventdata->callback = args.onclick; - eventdata->userdata = args.onclickdata; + eventdata->callback = args->onclick; + eventdata->userdata = args->onclickdata; eventdata->obj = obj; eventdata->value = 0; XtAddCallback( @@ -96,7 +96,7 @@ event->callback(&e, event->userdata); } -UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs args) { +UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs *args) { Arg xargs[16]; int n = 0; @@ -108,25 +108,25 @@ XtSetArg(xargs[n], XmNindicatorOn, False); n++; XmString label = NULL; - if(args.label) { - label = XmStringCreateLocalized((char*)args.label); + if(args->label) { + label = XmStringCreateLocalized((char*)args->label); XtSetArg(xargs[n], XmNlabelString, label); n++; } - char *name = args.name ? (char*)args.name : "togglebutton"; + char *name = args->name ? (char*)args->name : "togglebutton"; Widget button = XmCreateToggleButton(parent, name, xargs, n); XtManageChild(button); ctn->add(ctn, button); - ui_set_widget_groups(obj->ctx, button, args.groups); + ui_set_widget_groups(obj->ctx, button, args->groups); - ui_bind_togglebutton(obj, button, args.varname, args.value, args.onchange, args.onchangedata, args.enable_group); + ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_group); XmStringFree(label); return button; } -UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs args) { +UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs *args) { Arg xargs[16]; int n = 0; @@ -136,25 +136,25 @@ Widget parent = ctn->prepare(ctn, xargs, &n); XmString label = NULL; - if(args.label) { - label = XmStringCreateLocalized((char*)args.label); + if(args->label) { + label = XmStringCreateLocalized((char*)args->label); XtSetArg(xargs[n], XmNlabelString, label); n++; } - char *name = args.name ? (char*)args.name : "button"; + char *name = args->name ? (char*)args->name : "button"; Widget button = XmCreateToggleButton(parent, name, xargs, n); XtManageChild(button); ctn->add(ctn, button); - ui_set_widget_groups(obj->ctx, button, args.groups); + ui_set_widget_groups(obj->ctx, button, args->groups); - ui_bind_togglebutton(obj, button, args.varname, args.value, args.onchange, args.onchangedata, args.enable_group); + ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_group); XmStringFree(label); return button; } -UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs args) { +UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) { return ui_checkbox_create(obj, args); } @@ -173,6 +173,7 @@ e.window = e.obj->window; e.document = e.obj->ctx->document; e.eventdata = NULL; + e.eventdatatype = 0; e.intval = XmToggleButtonGetState(w); e.set = ui_get_setop(); @@ -282,6 +283,7 @@ e.window = e.obj->window; e.document = e.obj->ctx->document; e.eventdata = value; + e.eventdatatype = UI_EVENT_DATA_INTEGER_VALUE; e.intval = v; e.set = ui_get_setop(); @@ -343,7 +345,7 @@ event); } -UIWIDGET ui_radiobutton_create(UiObject* obj, UiToggleArgs args) { +UIWIDGET ui_radiobutton_create(UiObject* obj, UiToggleArgs *args) { Arg xargs[16]; int n = 0; @@ -353,19 +355,19 @@ Widget parent = ctn->prepare(ctn, xargs, &n); XtSetArg(xargs[n], XmNindicatorType, XmONE_OF_MANY_ROUND); n++; XmString label = NULL; - if(args.label) { - label = XmStringCreateLocalized((char*)args.label); + if(args->label) { + label = XmStringCreateLocalized((char*)args->label); XtSetArg(xargs[n], XmNlabelString, label); n++; } - char *name = args.name ? (char*)args.name : "button"; + char *name = args->name ? (char*)args->name : "button"; Widget button = XmCreateToggleButton(parent, name, xargs, n); XtManageChild(button); ctn->add(ctn, button); - ui_set_widget_groups(obj->ctx, button, args.groups); + ui_set_widget_groups(obj->ctx, button, args->groups); - UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_INTEGER); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); if(var) { UiInteger *value = var->value; CxList *rb = value->obj; @@ -396,11 +398,11 @@ // other buttons in the radio button group UiVarEventData *event = malloc(sizeof(UiVarEventData)); event->obj = obj; - event->callback = args.onchange; - event->userdata = args.onchangedata; + event->callback = args->onchange; + event->userdata = args->onchangedata; event->observers = NULL; event->var = var; - event->value = args.enable_group; + event->value = args->enable_group; XtAddCallback( button, XmNvalueChangedCallback,