--- a/ui/common/types.c Fri Jun 20 12:01:44 2025 +0200 +++ b/ui/common/types.c Sat Jun 21 14:17:20 2025 +0200 @@ -39,7 +39,7 @@ #include "../ui/image.h" static ui_list_init_func default_list_init; - +static void *default_list_init_userdata; UiObserver* ui_observer_new(ui_callback f, void *data) { UiObserver *observer = malloc(sizeof(UiObserver)); @@ -96,7 +96,7 @@ /* --------------------------- UiList --------------------------- */ -void uic_ucx_list_init(UiContext *ctx, UiList *list) { +void uic_ucx_list_init(UiContext *ctx, UiList *list, void *unused) { list->data = cxArrayListCreate(ctx->mp->allocator, NULL, CX_STORE_POINTERS, 32); list->first = ui_list_first; list->next = ui_list_next; @@ -105,13 +105,13 @@ } UiList* ui_list_new(UiContext *ctx, const char *name) { - return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init); + return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init, default_list_init_userdata); } -UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit) { +UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit, void *userdata) { UiList *list = cxMalloc(ctx->mp->allocator, sizeof(UiList)); memset(list, 0, sizeof(UiList)); - listinit(ctx, list); + listinit(ctx, list, userdata); if(name) { uic_reg_var(ctx, name, UI_VAR_LIST, list); @@ -667,8 +667,9 @@ /* ---------------- List initializers and wrapper functions ---------------- */ -void ui_global_list_initializer(ui_list_init_func func) { +void ui_global_list_initializer(ui_list_init_func func, void *userdata) { default_list_init = func; + default_list_init_userdata = userdata; } void ui_list_class_set_first(UiList *list, void*(*first)(UiList *list)) {