--- 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); }