ui/common/object.c

changeset 1127
d3a8c29ebdaa
parent 1123
42ef3156ea09
--- a/ui/common/object.c	Wed May 13 11:57:43 2026 +0200
+++ b/ui/common/object.c	Sun May 17 10:46:35 2026 +0200
@@ -39,6 +39,8 @@
 static CxList *creation_callbacks;
 static CxList *destruction_callbacks;
 
+static CxList *objects;
+
 typedef struct objcallback {
     ui_object_callback func;
     void *userdata;
@@ -67,6 +69,11 @@
 }
 
 void uic_object_created(UiObject *obj) {
+    if(!objects) {
+        objects = cxLinkedListCreate(NULL, CX_STORE_POINTERS);
+    }
+    cxListAdd(objects, obj);
+    
     CxIterator i = cxListIterator(creation_callbacks);
     cx_foreach(objcallback *, cb, i) {
         cb->func(obj, cb->userdata);
@@ -74,12 +81,20 @@
 }
 
 void uic_object_destroyed(UiObject *obj) {
+    if(objects) {
+        cxListFindRemove(objects, obj);
+    }
+    
     CxIterator i = cxListIterator(destruction_callbacks);
     cx_foreach(objcallback *, cb, i) {
         cb->func(obj, cb->userdata);
     }
 }
 
+CxList* uic_object_list(void) {
+    return objects ? objects : cxEmptyList;
+}
+
 void ui_object_ref(UiObject *obj) {
     obj->ref++;
 }

mercurial