# HG changeset patch # User Olaf Wintermann # Date 1748717846 -7200 # Node ID 8d2b7b9342306ef0fa20721f3028aac86f18f8e5 # Parent 9f3ff50da3028d01b8057682aa86a259105866d9 refactore widget args passing (Cocoa) diff -r 9f3ff50da302 -r 8d2b7b934230 ui/cocoa/button.m --- 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 -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; diff -r 9f3ff50da302 -r 8d2b7b934230 ui/cocoa/container.h --- 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 diff -r 9f3ff50da302 -r 8d2b7b934230 ui/cocoa/container.m --- 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; diff -r 9f3ff50da302 -r 8d2b7b934230 ui/cocoa/text.m --- 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 -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); }