ui/common/types.c

changeset 631
5d745e140ee7
parent 629
0385a450c2a6
child 659
d6baaa93f7be
--- 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)) {

mercurial