ui/cocoa/button.m

changeset 1099
a5057a367c8f
parent 1084
cce6dad72164
--- a/ui/cocoa/button.m	Mon Apr 20 21:19:13 2026 +0200
+++ b/ui/cocoa/button.m	Tue Apr 21 10:11:44 2026 +0200
@@ -30,6 +30,7 @@
 #import "EventData.h"
 #import "container.h"
 #import "image.h"
+#import "action.h"
 #import <objc/runtime.h>
 
 #import <cx/buffer.h>
@@ -47,7 +48,7 @@
     }
     
     if(args->onclick) {
-        EventData *event = [[EventData alloc] init:args->onclick userdata:args->onclickdata];
+        EventData *event = [[EventData alloc] init:args->onclick userdata:args->onclickdata action:args->action];
         event.obj = obj;
         button.target = event;
         button.action = @selector(handleEvent:);
@@ -88,8 +89,8 @@
         i->set = ui_togglebutton_set;
     }
     
-    if(args->onchange) {
-        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
+    if(args->onchange || args->action) {
+        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata action:args->action];
         event.get_eventdata = togglebutton_eventdata;
         event.obj = obj;
         event.var = var;
@@ -97,6 +98,8 @@
         button.target = event;
         button.action = @selector(handleEventWithEventData:);
         objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
+        
+        ui_cocoa_view_bind_action(obj->ctx, button, args->action);
     }
     
     UiLayout layout = UI_INIT_LAYOUT(args);
@@ -149,8 +152,8 @@
         i->set = ui_switch_set;
     }
     
-    if(args->onchange) {
-        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata];
+    if(args->onchange || args->action) {
+        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata action:args->action];
         event.get_eventdata = switch_eventdata;
         event.obj = obj;
         event.var = var;
@@ -158,6 +161,7 @@
         button.target = event;
         button.action = @selector(handleEventWithEventData:);
         objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
+        ui_cocoa_view_bind_action(obj->ctx, button, args->action);
     }
     
     UiLayout layout = UI_INIT_LAYOUT(args);
@@ -238,18 +242,19 @@
         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 || args->action || var) {
+        EventData *event = [[EventData alloc] init:args->onchange userdata:args->onchangedata action:args->action];
         event.get_eventdata = radiobutton_eventdata;
         event.obj = obj;
         event.var = var;
         event.vartype = UI_VAR_INTEGER;
         button.target = event;
         
-        
         button.action = @selector(handleEventWithEventData:);
         
         objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
+        
+        ui_cocoa_view_bind_action(obj->ctx, button, args->action);
     }
     
     UiLayout layout = UI_INIT_LAYOUT(args);

mercurial