| 131 item->item.prev = NULL; |
131 item->item.prev = NULL; |
| 132 item->item.next = NULL; |
132 item->item.next = NULL; |
| 133 item->item.type = UI_MENU_ITEM; |
133 item->item.type = UI_MENU_ITEM; |
| 134 |
134 |
| 135 item->label = nl_strdup(args->label); |
135 item->label = nl_strdup(args->label); |
| 136 item->stockid = nl_strdup(args->stockid); |
|
| 137 item->icon = nl_strdup(args->icon); |
136 item->icon = nl_strdup(args->icon); |
| 138 item->userdata = args->onclickdata; |
137 item->userdata = args->onclickdata; |
| 139 item->callback = args->onclick; |
138 item->callback = args->onclick; |
| 140 item->groups = uic_copy_groups(args->groups, &item->ngroups); |
139 item->groups = uic_copy_groups(args->groups, &item->ngroups); |
| 141 |
140 |
| 158 item->item.prev = NULL; |
157 item->item.prev = NULL; |
| 159 item->item.next = NULL; |
158 item->item.next = NULL; |
| 160 item->item.type = UI_MENU_CHECK_ITEM; |
159 item->item.type = UI_MENU_CHECK_ITEM; |
| 161 |
160 |
| 162 item->label = nl_strdup(args->label); |
161 item->label = nl_strdup(args->label); |
| 163 item->stockid = nl_strdup(args->stockid); |
|
| 164 item->icon = nl_strdup(args->icon); |
162 item->icon = nl_strdup(args->icon); |
| 165 item->varname = nl_strdup(args->varname); |
163 item->varname = nl_strdup(args->varname); |
| 166 item->userdata = args->onchangedata; |
164 item->userdata = args->onchangedata; |
| 167 item->callback = args->onchange; |
165 item->callback = args->onchange; |
| 168 item->groups = uic_copy_groups(args->groups, &item->ngroups); |
166 item->groups = uic_copy_groups(args->groups, &item->ngroups); |
| 176 item->item.prev = NULL; |
174 item->item.prev = NULL; |
| 177 item->item.next = NULL; |
175 item->item.next = NULL; |
| 178 item->item.type = UI_MENU_RADIO_ITEM; |
176 item->item.type = UI_MENU_RADIO_ITEM; |
| 179 |
177 |
| 180 item->label = nl_strdup(args->label); |
178 item->label = nl_strdup(args->label); |
| 181 item->stockid = nl_strdup(args->stockid); |
|
| 182 item->icon = nl_strdup(args->icon); |
179 item->icon = nl_strdup(args->icon); |
| 183 item->varname = nl_strdup(args->varname); |
180 item->varname = nl_strdup(args->varname); |
| 184 item->userdata = args->onchangedata; |
181 item->userdata = args->onchangedata; |
| 185 item->callback = args->onchange; |
182 item->callback = args->onchange; |
| 186 item->groups = uic_copy_groups(args->groups, &item->ngroups); |
183 item->groups = uic_copy_groups(args->groups, &item->ngroups); |
| 256 void ui_contextmenu_builder(UiMenuBuilder **out_builder) { |
253 void ui_contextmenu_builder(UiMenuBuilder **out_builder) { |
| 257 UiMenuBuilder *builder = malloc(sizeof(UiMenuBuilder)); |
254 UiMenuBuilder *builder = malloc(sizeof(UiMenuBuilder)); |
| 258 builder->menus_begin = NULL; |
255 builder->menus_begin = NULL; |
| 259 builder->menus_end = NULL; |
256 builder->menus_end = NULL; |
| 260 builder->current = cxLinkedListCreate(cxDefaultAllocator, NULL, CX_STORE_POINTERS); |
257 builder->current = cxLinkedListCreate(cxDefaultAllocator, NULL, CX_STORE_POINTERS); |
| |
258 builder->ref = 1; |
| 261 current_builder = builder; |
259 current_builder = builder; |
| 262 *out_builder = builder; |
260 *out_builder = builder; |
| 263 |
261 |
| 264 ui_menu_create(NULL); |
262 ui_menu_create(NULL); |
| 265 } |
263 } |
| 282 } |
280 } |
| 283 case UI_MENU_ITEM: { |
281 case UI_MENU_ITEM: { |
| 284 UiMenuItem *i = (UiMenuItem*)item; |
282 UiMenuItem *i = (UiMenuItem*)item; |
| 285 free(i->groups); |
283 free(i->groups); |
| 286 free(i->label); |
284 free(i->label); |
| 287 free(i->stockid); |
|
| 288 free(i->icon); |
285 free(i->icon); |
| 289 break; |
286 break; |
| 290 } |
287 } |
| 291 case UI_MENU_CHECK_ITEM: { |
288 case UI_MENU_CHECK_ITEM: { |
| 292 UiMenuCheckItem *i = (UiMenuCheckItem*)item; |
289 UiMenuCheckItem *i = (UiMenuCheckItem*)item; |
| 293 free(i->groups); |
290 free(i->groups); |
| 294 free(i->label); |
291 free(i->label); |
| 295 free(i->stockid); |
|
| 296 free(i->icon); |
292 free(i->icon); |
| 297 free(i->varname); |
293 free(i->varname); |
| 298 break; |
294 break; |
| 299 } |
295 } |
| 300 case UI_MENU_RADIO_ITEM: { |
296 case UI_MENU_RADIO_ITEM: { |
| 301 UiMenuRadioItem *i = (UiMenuRadioItem*)item; |
297 UiMenuRadioItem *i = (UiMenuRadioItem*)item; |
| 302 free(i->groups); |
298 free(i->groups); |
| 303 free(i->label); |
299 free(i->label); |
| 304 free(i->stockid); |
|
| 305 free(i->icon); |
300 free(i->icon); |
| 306 //free(i->varname); |
301 free(i->varname); |
| 307 break; |
302 break; |
| 308 } |
303 } |
| 309 case UI_MENU_ITEM_LIST: { |
304 case UI_MENU_ITEM_LIST: { |
| 310 break; |
305 break; |
| 311 } |
306 } |