ui/cocoa/Toolbar.m

changeset 1162
3a2bf1795579
parent 1144
6e9da0736c33
--- a/ui/cocoa/Toolbar.m	Tue Jun 02 20:14:14 2026 +0200
+++ b/ui/cocoa/Toolbar.m	Wed Jun 03 19:07:24 2026 +0200
@@ -39,7 +39,21 @@
     
 }
 
+static void toolitem_set_enabled(void *item, int enabled) {
+    NSToolbarItem *i = (__bridge NSToolbarItem*)item;
+    i.enabled = enabled;
+}
 
+static void toolitem_bind_action(UiContext *ctx, NSToolbarItem *item, const char *action) {
+    if(action) {
+        void *widget = (__bridge void*)item;
+        uic_bind_action(ctx, action, widget, (ui_enablefunc)toolitem_set_enabled);
+        UiAction *ui_action = uic_resolve_action(ctx, action);
+        if(!ui_action) {
+            toolitem_set_enabled(widget, FALSE);
+        }
+    }
+}
 
 /* ---------------------      UiToolbar      --------------------- */
 
@@ -219,12 +233,14 @@
         button.image = ui_cocoa_named_icon(item->args.icon);
     }
     
-    if(item->args.onclick) {
+    if(item->args.onclick || item->args.action) {
         EventData *event = [[EventData alloc] init:item->args.onclick userdata:item->args.onclickdata action:item->args.action];
         event.obj = obj;
         button.target = event;
         button.action = @selector(handleEvent:);
         objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
+        
+        toolitem_bind_action(obj->ctx, button, item->args.action);
     }
     return button;
 }

mercurial