ui/gtk/menu.c

branch
newapi
changeset 286
f6ca4bbbe2a6
parent 284
f93c368518c0
child 287
5370ea7e45a2
equal deleted inserted replaced
285:034015dfd3de 286:f6ca4bbbe2a6
241 241
242 ls->object = obj; 242 ls->object = obj;
243 ls->menu = GTK_MENU_SHELL(p); 243 ls->menu = GTK_MENU_SHELL(p);
244 ls->index = index; 244 ls->index = index;
245 ls->oldcount = 0; 245 ls->oldcount = 0;
246 ls->getvalue = il->getvalue;
246 247
247 UiVar* var = uic_create_var(ui_global_context(), il->varname, UI_VAR_LIST); 248 UiVar* var = uic_create_var(ui_global_context(), il->varname, UI_VAR_LIST);
248 ls->list = var->value; 249 ls->list = var->value;
249 250
250 ls->callback = il->callback; 251 ls->callback = il->callback;
272 mi = mi->next; 273 mi = mi->next;
273 i++; 274 i++;
274 } 275 }
275 } 276 }
276 277
277 char *str = ui_list_first(list->list); 278 void* elm = ui_list_first(list->list);
278 if(str) { 279 if(elm) {
279 GtkWidget *widget = gtk_separator_menu_item_new(); 280 GtkWidget *widget = gtk_separator_menu_item_new();
280 gtk_menu_shell_insert(list->menu, widget, list->index); 281 gtk_menu_shell_insert(list->menu, widget, list->index);
281 gtk_widget_show(widget); 282 gtk_widget_show(widget);
282 } 283 }
284
285 ui_getvaluefunc getvalue = list->getvalue;
283 int i = 1; 286 int i = 1;
284 while(str) { 287 while(elm) {
285 GtkWidget *widget = gtk_menu_item_new_with_label(str); 288 char *label = (char*) (getvalue ? getvalue(elm, 0) : elm);
289
290 GtkWidget *widget = gtk_menu_item_new_with_label(label);
286 gtk_menu_shell_insert(list->menu, widget, list->index + i); 291 gtk_menu_shell_insert(list->menu, widget, list->index + i);
287 gtk_widget_show(widget); 292 gtk_widget_show(widget);
288 293
289 if(list->callback) { 294 if(list->callback) {
290 // TODO: use mempool 295 // TODO: use mempool
305 "destroy", 310 "destroy",
306 G_CALLBACK(ui_destroy_userdata), 311 G_CALLBACK(ui_destroy_userdata),
307 event); 312 event);
308 } 313 }
309 314
310 str = ui_list_next(list->list); 315 elm = ui_list_next(list->list);
311 i++; 316 i++;
312 } 317 }
313 318
314 list->oldcount = i; 319 list->oldcount = i;
315 } 320 }

mercurial