--- a/ui/ui/toolkit.h Thu Jun 04 20:35:31 2026 +0200 +++ b/ui/ui/toolkit.h Fri Jun 05 18:02:54 2026 +0200 @@ -213,6 +213,8 @@ typedef struct UiTextStyle UiTextStyle; typedef struct UiColor UiColor; +typedef enum UiEventType UiEventType; + /* begin opaque types */ typedef struct UiContext UiContext; typedef struct UiContainer UiContainer; @@ -317,14 +319,32 @@ unsigned int ref; }; +enum UiEventType { + UI_EVENT_DATA_NULL = 0, + UI_EVENT_DATA_POINTER, + UI_EVENT_DATA_STRING, + UI_EVENT_DATA_INTEGER_VALUE, + UI_EVENT_DATA_STRING_VALUE, + UI_EVENT_DATA_TEXT_VALUE, + UI_EVENT_DATA_DOUBLE_VALUE, + UI_EVENT_DATA_RANGE_VALUE, + UI_EVENT_DATA_TEXT_CHANGED, + UI_EVENT_DATA_LIST_SELECTION, + UI_EVENT_DATA_LIST_ELM, + UI_EVENT_DATA_DND, + UI_EVENT_DATA_SUBLIST, + UI_EVENT_DATA_FILE_LIST, + UI_EVENT_DATA_TYPED_OBJECT +}; + struct UiEvent { - UiObject *obj; - void *document; - void *window; - void *eventdata; - int eventdatatype; - int intval; - int set; + UiObject *obj; + void *document; + void *window; + void *eventdata; + UiEventType eventdatatype; + int intval; + int set; }; struct UiMouseEvent { @@ -486,22 +506,11 @@ int intdata; } UiCondVar; -enum UiEventType { - UI_EVENT_DATA_NULL = 0, - UI_EVENT_DATA_POINTER, - UI_EVENT_DATA_STRING, - UI_EVENT_DATA_INTEGER_VALUE, - UI_EVENT_DATA_STRING_VALUE, - UI_EVENT_DATA_TEXT_VALUE, - UI_EVENT_DATA_DOUBLE_VALUE, - UI_EVENT_DATA_RANGE_VALUE, - UI_EVENT_DATA_TEXT_CHANGED, - UI_EVENT_DATA_LIST_SELECTION, - UI_EVENT_DATA_LIST_ELM, - UI_EVENT_DATA_DND, - UI_EVENT_DATA_SUBLIST, - UI_EVENT_DATA_FILE_LIST -}; +// eventdata in case eventdatatype is UI_EVENT_DATA_TYPED_OBJECT +typedef struct UiTypedObj { + void *ptr; + uint64_t type; +} UiTypedObj; #define UI_COLOR(r, g, b) (UiColor){r, g, b} struct UiColor { @@ -587,8 +596,9 @@ const char *accelerator, const char *accelerator_text); UIEXPORT void ui_update_action_bindings(UiContext *ctx); -UIEXPORT void ui_call_action(UiContext *ctx, const char *action_name); -UIEXPORT void ui_call_action2(UiContext *ctx, const char *action_name, void *eventdata, int intval); +UIEXPORT int ui_call_action(UiContext *ctx, const char *action_name); +UIEXPORT int ui_call_action2(UiContext *ctx, const char *action_name, void *eventdata, int intval); +UIEXPORT int ui_call_action3(UiContext *ctx, const char *action_name, void *ptr, uint64_t type_id); UIEXPORT void ui_broadcast_action(const char *action_name); UIEXPORT void ui_broadcast_action2(const char *action_name, void *eventdata, int intval); UIEXPORT void ui_mainthread_broadcast(const char *action_name);