ui/common/types.c

changeset 1100
7773850dc77f
parent 1090
ab2e458df182
equal deleted inserted replaced
1099:a5057a367c8f 1100:7773850dc77f
108 list->count = ui_list_count; 108 list->count = ui_list_count;
109 } 109 }
110 110
111 void uic_ucx_list_destroy(UiContext *ctx, UiList *list, void *unused) { 111 void uic_ucx_list_destroy(UiContext *ctx, UiList *list, void *unused) {
112 cxListFree(list->data); 112 cxListFree(list->data);
113 ui_free(ctx, list);
114 } 113 }
115 114
116 UiList* ui_list_new(UiContext *ctx, const char *name) { 115 UiList* ui_list_new(UiContext *ctx, const char *name) {
117 return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init, default_list_init_userdata); 116 return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init, default_list_init_userdata);
118 } 117 }
119 118
120 UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit, void *userdata) { 119 UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit, void *userdata) {
121 UiList *list = cxMalloc(ctx->mp->allocator, sizeof(UiList)); 120 UiList *list = ui_malloc(ctx, sizeof(UiList));
122 memset(list, 0, sizeof(UiList)); 121 memset(list, 0, sizeof(UiList));
123 listinit(ctx, list, userdata); 122 listinit(ctx, list, userdata);
124 123
125 if(name) { 124 if(name && ctx) {
126 uic_reg_var(ctx, name, UI_VAR_LIST, list); 125 uic_reg_var(ctx, name, UI_VAR_LIST, list);
127 } 126 }
128 127
129 return list; 128 return list;
130 } 129 }
135 } else if(!default_list_destroy) { 134 } else if(!default_list_destroy) {
136 uic_ucx_list_destroy(ctx, list, NULL); 135 uic_ucx_list_destroy(ctx, list, NULL);
137 } else { 136 } else {
138 default_list_destroy(ctx, list, default_list_destroy_userdata); 137 default_list_destroy(ctx, list, default_list_destroy_userdata);
139 } 138 }
140 139 ui_free(ctx, list);
141 } 140 }
142 141
143 void* ui_list_first(UiList *list) { 142 void* ui_list_first(UiList *list) {
144 list->iter = (void*)(intptr_t)0; 143 list->iter = (void*)(intptr_t)0;
145 return cxListAt(list->data, 0); 144 return cxListAt(list->data, 0);

mercurial