ui/motif/button.c

changeset 108
77254bd6dccb
parent 103
6606616eca9f
child 112
c3f2f16fa4b8
--- 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,

mercurial