diff -r fc854e0ab924 -r e62047c59658 ui/motif/button.c --- a/ui/motif/button.c Thu May 29 12:03:32 2025 +0200 +++ b/ui/motif/button.c Thu May 29 13:23:11 2025 +0200 @@ -41,7 +41,7 @@ #include -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); } @@ -343,7 +343,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 +353,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 +396,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,