ui/common/action.c

changeset 1170
b79469a55540
parent 1127
d3a8c29ebdaa
child 1183
51c0e1053592
--- a/ui/common/action.c	Thu Jun 04 20:35:31 2026 +0200
+++ b/ui/common/action.c	Fri Jun 05 18:02:54 2026 +0200
@@ -143,11 +143,7 @@
     }
 }
 
-void ui_call_action(UiContext *ctx, const char *action_name) {
-    ui_call_action2(ctx, action_name, NULL, 0);
-}
-
-void ui_call_action2(UiContext *ctx, const char *action_name, void *eventdata, int intval) {
+static int call_action(UiContext *ctx, const char *action_name, void *eventdata, UiEventType eventdatatype, int intval) {
     UiAction *action = uic_resolve_action(ctx, action_name);
     if(action && action->callback) {
         UiEvent event;
@@ -157,13 +153,33 @@
         event.document = ctx->self_doc ? ctx->self_doc : ctx->document;
         if(eventdata) {
             event.eventdata = eventdata;
-            event.eventdatatype = UI_EVENT_DATA_POINTER;
+            event.eventdatatype = eventdatatype;
         }
         event.intval = intval;
         action->callback(&event, action->userdata);
+        return 1;
+    } else {
+        return 0;
     }
 }
 
+int ui_call_action(UiContext *ctx, const char *action_name) {
+    return ui_call_action2(ctx, action_name, NULL, 0);
+}
+
+int ui_call_action2(UiContext *ctx, const char *action_name, void *eventdata, int intval) {
+    return call_action(ctx, action_name, eventdata, UI_EVENT_DATA_POINTER, intval);
+}
+
+int ui_call_action3(UiContext *ctx, const char *action_name, void *ptr, uint64_t type_id) {
+    UiTypedObj *obj = malloc(sizeof(UiTypedObj));
+    obj->ptr = ptr;
+    obj->type = type_id;
+    int ret = call_action(ctx, action_name, obj, UI_EVENT_DATA_TYPED_OBJECT, 0);
+    free(obj);
+    return ret;
+}
+
 void ui_broadcast_action(const char *action_name) {
     ui_broadcast_action2(action_name, NULL, 0);
 }

mercurial