diff -r 91696f7fa475 -r 6ec3c71ba298 ui/common/context.c --- a/ui/common/context.c Sat Jun 13 14:12:43 2026 +0200 +++ b/ui/common/context.c Sat Jun 13 17:08:09 2026 +0200 @@ -124,8 +124,8 @@ ev.intval = 0; ev.set = 0; - if(ctx->close_callback) { - ctx->close_callback(&ev, ctx->close_data); + if(ctx->onclose) { + ctx->onclose(&ev, ctx->onclosedata); } CxIterator i = cxListIterator(ctx->destroy_handler); @@ -190,6 +190,12 @@ doc_ctx->ref++; uic_context_update_bindings(doc_ctx); + if(doc_ctx->onattach) { + UiEvent event; + memset(&event, 0, sizeof(UiEvent)); + event.document = document; + doc_ctx->onattach(&event, doc_ctx->onattachdata); + } } static void uic_context_unbind_vars(UiContext *ctx) { @@ -233,12 +239,18 @@ cxListRemove(ctx->documents, docIndex); ctx->document = cxListAt(ctx->documents, 0); - UiContext *docctx = ui_document_context(document); - uic_context_unbind_vars(docctx); // unbind all doc/subdoc vars from the parent - docctx->parent = NULL; + UiContext *doc_ctx = ui_document_context(document); + uic_context_unbind_vars(doc_ctx); // unbind all doc/subdoc vars from the parent + doc_ctx->parent = NULL; ui_document_unref(document); ui_update_action_bindings(ctx); + if(doc_ctx->ondetach) { + UiEvent event; + memset(&event, 0, sizeof(UiEvent)); + event.document = document; + doc_ctx->ondetach(&event, doc_ctx->ondetachdata); + } } void uic_context_detach_all(UiContext *ctx) { @@ -600,8 +612,8 @@ } void ui_context_closefunc(UiContext *ctx, ui_callback fnc, void *udata) { - ctx->close_callback = fnc; - ctx->close_data = udata; + ctx->onclose = fnc; + ctx->onclosedata = udata; } UiContext* ui_context_parent(UiContext *ctx) {