--- 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++; }