diff -r 6ec3c71ba298 -r 296b8b6eaae6 ui/common/document.c --- a/ui/common/document.c Sat Jun 13 17:08:09 2026 +0200 +++ b/ui/common/document.c Sat Jun 13 17:19:59 2026 +0200 @@ -87,14 +87,34 @@ return ctx->obj; } -void ui_document_onattach(void *doc, ui_callback cb, void *data) { +void ui_document_onattach(void *doc, ui_callback cb, void *data) { UiContext *ctx = ui_document_context(doc); ctx->onattach = cb; ctx->onattachdata = data; } -void ui_document_ondetach(void *doc, ui_callback cb, void *data) { +void ui_document_ondetach(void *doc, ui_callback cb, void *data) { UiContext *ctx = ui_document_context(doc); ctx->ondetach = cb; ctx->ondetachdata = data; } + +static void attachment_action_callback(UiEvent *event, void *action) { + if(event->document) { + UiContext *ctx = ui_document_context(event->document); + ui_call_action_on(ctx, action); + } +} + +void ui_document_onattach_action(void *doc, const char *action) { + UiContext *ctx = ui_document_context(doc); + ctx->onattach = attachment_action_callback; + ctx->onattachdata = ui_strdup(ctx, action); +} + +void ui_document_ondetach_action(void *doc, const char *action) { + UiContext *ctx = ui_document_context(doc); + ctx->ondetach = attachment_action_callback; + ctx->ondetachdata = ui_strdup(ctx, action); +} +