ui/common/context.c

changeset 1195
6ec3c71ba298
parent 1169
c69f2941d536
--- 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) {

mercurial