--- a/ui/common/document.c Tue Apr 14 18:08:20 2026 +0200 +++ b/ui/common/document.c Wed Apr 15 11:19:25 2026 +0200 @@ -49,20 +49,22 @@ } void ui_document_destroy(void *doc) { + uic_context_destroy(ui_document_context(doc), doc); +} + +void ui_document_ref(void *doc) { UiContext *ctx = ui_document_context(doc); if(ctx) { - UiEvent ev; - ev.window = NULL; - ev.document = doc; - ev.obj = NULL; - ev.eventdata = NULL; - ev.eventdatatype = 0; - ev.intval = 0; + ctx->ref++; + } +} - if(ctx->close_callback) { - ctx->close_callback(&ev, ctx->close_data); +void ui_document_unref(void *doc) { + UiContext *ctx = ui_document_context(doc); + if(ctx) { + if(--ctx->ref == 0) { + uic_context_destroy(ctx, doc); } - cxMempoolFree(ctx->mp); } }