| 307 void ui_contextmenu_builder(UiMenuBuilder **out_builder) { |
307 void ui_contextmenu_builder(UiMenuBuilder **out_builder) { |
| 308 UiMenuBuilder *builder = malloc(sizeof(UiMenuBuilder)); |
308 UiMenuBuilder *builder = malloc(sizeof(UiMenuBuilder)); |
| 309 builder->menus_begin = NULL; |
309 builder->menus_begin = NULL; |
| 310 builder->menus_end = NULL; |
310 builder->menus_end = NULL; |
| 311 builder->current = cxLinkedListCreate(cxDefaultAllocator, CX_STORE_POINTERS); |
311 builder->current = cxLinkedListCreate(cxDefaultAllocator, CX_STORE_POINTERS); |
| |
312 builder->custom_data = NULL; |
| |
313 builder->custom_destr = NULL; |
| 312 builder->ref = 1; |
314 builder->ref = 1; |
| 313 current_builder = builder; |
315 current_builder = builder; |
| 314 *out_builder = builder; |
316 *out_builder = builder; |
| 315 |
317 |
| 316 ui_menu_create(NULL); |
318 ui_menu_create(NULL); |
| 317 } |
319 } |
| 318 |
320 |
| |
321 void ui_menubuilder_set_custom_data(UiMenuBuilder *builder, void *data, ui_destructor_func destr) { |
| |
322 builder->custom_destr = destr; |
| |
323 builder->custom_data = data; |
| |
324 } |
| 319 |
325 |
| 320 |
326 |
| 321 static void free_menuitem(UiMenuItemI *item) { |
327 static void free_menuitem(UiMenuItemI *item) { |
| 322 switch(item->type) { |
328 switch(item->type) { |
| 323 default: break; |
329 default: break; |