add ui_remove_destructor

Tue, 19 May 2026 18:31:16 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 19 May 2026 18:31:16 +0200
changeset 1131
5e9bc6428bac
parent 1130
f0def0c24ae6
child 1132
2cd3b4131a57

add ui_remove_destructor

ui/common/context.c file | annotate | diff | comparison | revisions
ui/common/context.h file | annotate | diff | comparison | revisions
--- a/ui/common/context.c	Tue May 19 18:25:53 2026 +0200
+++ b/ui/common/context.c	Tue May 19 18:31:16 2026 +0200
@@ -97,6 +97,15 @@
     cxListAdd(ctx->destroy_handler, &handler);
 }
 
+void uic_context_remove_destructor(UiContext *ctx, void *data) {
+    CxIterator i = cxListIterator(ctx->destroy_handler);
+    cx_foreach(UiDestroyHandler *, handler, i) {
+        if(handler->data == data) {
+            cxIteratorFlagRemoval(i);
+        }
+    }
+}
+
 void uic_context_prepare_close(UiContext *ctx) {
     cxListClear(ctx->states);
     cxListClear(ctx->state_widgets);
@@ -733,6 +742,10 @@
     uic_context_add_destructor(ctx, destr, data);
 }
 
+void  ui_remove_destructor(UiContext *ctx, void *data) {
+    uic_context_remove_destructor(ctx, data);
+}
+
 void  ui_set_destructor(void *mem, ui_destructor_func destr) {
     cxMempoolSetDestructor(mem, (cx_destructor_func)destr);
 }
--- a/ui/common/context.h	Tue May 19 18:25:53 2026 +0200
+++ b/ui/common/context.h	Tue May 19 18:31:16 2026 +0200
@@ -134,6 +134,7 @@
 UiContext* uic_context(UiObject *toplevel, CxMempool *mp);
 UiContext* uic_root_context(UiContext *ctx);
 void uic_context_add_destructor(UiContext *ctx, cx_destructor_func func, void *data);
+void uic_context_remove_destructor(UiContext *ctx, void *data);
 
 void uic_context_prepare_close(UiContext *ctx);
 void uic_context_destroy(UiContext *ctx, void *document);

mercurial