refactore widget args passing (Cocoa)

Sat, 31 May 2025 20:57:26 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 31 May 2025 20:57:26 +0200
changeset 603
8d2b7b934230
parent 602
9f3ff50da302
child 605
488a2caebc0c

refactore widget args passing (Cocoa)

ui/cocoa/button.m file | annotate | diff | comparison | revisions
ui/cocoa/container.h file | annotate | diff | comparison | revisions
ui/cocoa/container.m file | annotate | diff | comparison | revisions
ui/cocoa/text.m file | annotate | diff | comparison | revisions
--- a/ui/cocoa/button.m	Fri May 30 17:55:57 2025 +0200
+++ b/ui/cocoa/button.m	Sat May 31 20:57:26 2025 +0200
@@ -31,15 +31,15 @@
 #import "Container.h"
 #import <objc/runtime.h>
 
-UIWIDGET ui_button_create(UiObject* obj, UiButtonArgs args) {
+UIWIDGET ui_button_create(UiObject* obj, UiButtonArgs *args) {
     NSButton *button = [[NSButton alloc] init];
-    if(args.label) {
-        NSString *label = [[NSString alloc] initWithUTF8String:args.label];
+    if(args->label) {
+        NSString *label = [[NSString alloc] initWithUTF8String:args->label];
         button.title = label;
     }
     
-    if(args.onclick) {
-        EventData *event = [[EventData alloc] init:args.onclick userdata:args.onclickdata];
+    if(args->onclick) {
+        EventData *event = [[EventData alloc] init:args->onclick userdata:args->onclickdata];
         event.obj = obj;
         button.target = event;
         button.action = @selector(handleEvent:);
@@ -59,17 +59,17 @@
     *value = (int)state;
 }
 
-UIWIDGET togglebutton_create(UiObject* obj, UiToggleArgs args, enum NSButtonType type) {
+UIWIDGET togglebutton_create(UiObject* obj, UiToggleArgs *args, enum NSButtonType type) {
     NSButton *button = [[NSButton alloc] init];
     [button setButtonType:type];
     //[button setAllowsMixedState:YES];
     
-    if(args.label) {
-        NSString *label = [[NSString alloc] initWithUTF8String:args.label];
+    if(args->label) {
+        NSString *label = [[NSString alloc] initWithUTF8String:args->label];
         button.title = label;
     }
     
-    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 *i = var->value;
         i->obj = (__bridge void*)button;
@@ -77,8 +77,8 @@
         i->set = ui_togglebutton_set;
     }
     
-    if(args.onchange) {
-        EventData *event = [[EventData alloc] init:args.onchange userdata:args.onchangedata];
+    if(args->onchange) {
+        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
         event.get_eventdata = togglebutton_eventdata;
         event.obj = obj;
         event.var = var;
@@ -113,11 +113,11 @@
     button.state = state;
 }
 
-UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs args) {
+UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs *args) {
     return togglebutton_create(obj, args, NSButtonTypePushOnPushOff);
 }
 
-UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs args) {
+UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs *args) {
     return togglebutton_create(obj, args, NSButtonTypeSwitch);
 }
 
@@ -127,10 +127,10 @@
     *value = (int)state;
 }
 
-UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs args) {
+UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) {
     NSSwitch *button = [[NSSwitch alloc] init];
     
-    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 *i = var->value;
         i->obj = (__bridge void*)button;
@@ -138,8 +138,8 @@
         i->set = ui_switch_set;
     }
     
-    if(args.onchange) {
-        EventData *event = [[EventData alloc] init:args.onchange userdata:args.onchangedata];
+    if(args->onchange) {
+        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
         event.get_eventdata = switch_eventdata;
         event.obj = obj;
         event.var = var;
@@ -204,14 +204,14 @@
     }
 }
 
-UIWIDGET ui_radiobutton_create(UiObject* obj, UiToggleArgs args) {
+UIWIDGET ui_radiobutton_create(UiObject* obj, UiToggleArgs *args) {
     UiRadioButton *button = [[UiRadioButton alloc] init];
     
-    if(args.label) {
-        button.title = [[NSString alloc] initWithUTF8String:args.label];
+    if(args->label) {
+        button.title = [[NSString alloc] initWithUTF8String:args->label];
     }
     
-    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);
     button.var = var;
     NSMutableArray *buttons = nil;
     if(var) {
@@ -227,8 +227,8 @@
         objc_setAssociatedObject(button, "radiogroup", buttons, OBJC_ASSOCIATION_RETAIN);
     }
     
-    if(args.onchange || var) {
-        EventData *event = [[EventData alloc] init:args.onchange userdata:args.onchangedata];
+    if(args->onchange || var) {
+        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
         event.get_eventdata = radiobutton_eventdata;
         event.obj = obj;
         event.var = var;
--- a/ui/cocoa/container.h	Fri May 30 17:55:57 2025 +0200
+++ b/ui/cocoa/container.h	Sat May 31 20:57:26 2025 +0200
@@ -56,13 +56,13 @@
 };
 
 #define UI_INIT_LAYOUT(args) (UiLayout) {\
-    .fill = args.fill, \
-    .hexpand = args.hexpand, \
-    .vexpand = args.vexpand, \
-    .hfill = args.hfill, \
-    .vfill = args.vfill, \
-    .colspan = args.colspan, \
-    .rowspan = args.rowspan }
+    .fill = args->fill, \
+    .hexpand = args->hexpand, \
+    .vexpand = args->vexpand, \
+    .hfill = args->hfill, \
+    .vfill = args->vfill, \
+    .colspan = args->colspan, \
+    .rowspan = args->rowspan }
 
 
 @protocol Container
--- a/ui/cocoa/container.m	Fri May 30 17:55:57 2025 +0200
+++ b/ui/cocoa/container.m	Sat May 31 20:57:26 2025 +0200
@@ -95,8 +95,8 @@
 
 /* -------------------- public container functions --------------------- */
 
-static UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs args, NSUserInterfaceLayoutOrientation orientation) {
-    BoxContainer *box = [[BoxContainer alloc] init:orientation spacing:args.spacing];
+static UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs *args, NSUserInterfaceLayoutOrientation orientation) {
+    BoxContainer *box = [[BoxContainer alloc] init:orientation spacing:args->spacing];
     box.translatesAutoresizingMaskIntoConstraints = false;
     
     // add box to the parent
@@ -109,15 +109,15 @@
     return (__bridge void*)box;
 }
 
-UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs args) {
+UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs *args) {
     return ui_box_create(obj, args, NSUserInterfaceLayoutOrientationVertical);
 }
 
-UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs args) {
+UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) {
     return ui_box_create(obj, args, NSUserInterfaceLayoutOrientationHorizontal);
 }
 
-UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs args) {
+UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) {
     GridLayout *grid = [[GridLayout alloc] init];
     grid.translatesAutoresizingMaskIntoConstraints = false;
     
--- a/ui/cocoa/text.m	Fri May 30 17:55:57 2025 +0200
+++ b/ui/cocoa/text.m	Sat May 31 20:57:26 2025 +0200
@@ -31,7 +31,7 @@
 #import "Container.h"
 #import <objc/runtime.h>
 
-UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs args) {
+UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) {
     NSTextView *textview = [[NSTextView alloc] init];
     textview.autoresizingMask = NSViewWidthSizable;
     textview.minSize = NSMakeSize(0, 0);
@@ -45,7 +45,7 @@
     ui_container_add(obj, scrollview, &layout, TRUE);
     
     
-    UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_TEXT);
+    UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_TEXT);
     if(var) {
         UiText *text = var->value;
         text->obj = (__bridge void*)textview;
@@ -137,7 +137,7 @@
 
 /* -------------------------- TextField -------------------------- */
 
-static UIWIDGET textfield_create(UiObject *obj, UiTextFieldArgs args, BOOL password, BOOL frameless) {
+static UIWIDGET textfield_create(UiObject *obj, UiTextFieldArgs *args, BOOL password, BOOL frameless) {
     NSTextField *textfield;
     if(password) {
         textfield = [[NSSecureTextField alloc] init];
@@ -152,7 +152,7 @@
     UiLayout layout = UI_INIT_LAYOUT(args);
     ui_container_add(obj, textfield, &layout, FALSE);
     
-    UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING);
+    UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING);
     if(var) {
         UiString *s = var->value;
         if(s->value.ptr) {
@@ -169,15 +169,15 @@
     return (__bridge void*)textfield;
 }
 
-UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs args) {
+UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs *args) {
     return textfield_create(obj, args, FALSE, FALSE);
 }
 
-UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs args) {
+UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs *args) {
     return textfield_create(obj, args, FALSE, TRUE);
 }
 
-UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs args) {
+UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs *args) {
     return textfield_create(obj, args, TRUE, FALSE);
 }
 

mercurial