ui/motif/menu.c

changeset 1108
2c8ab8c17da7
parent 1016
ccde46662db7
equal deleted inserted replaced
1107:22d58a28fea7 1108:2c8ab8c17da7
300 Widget s = XmCreateSeparatorGadget(list->menu, "menuseparator", args, 1); 300 Widget s = XmCreateSeparatorGadget(list->menu, "menuseparator", args, 1);
301 XtManageChild(s); 301 XtManageChild(s);
302 i++; 302 i++;
303 } 303 }
304 304
305 ui_getvaluefunc getvalue = list->getvalue; 305 int row = 0;
306 ui_getvaluefunc2 getvalue = list->getvalue;
307 void *getvaluedata = list->getvaluedata;
306 int pos = list->index; 308 int pos = list->index;
307 while(elm) { 309 while(elm) {
308 n = 0; 310 n = 0;
309 char *label = (char*) (getvalue ? getvalue(elm, 0) : elm); 311 UiBool freeResult = FALSE;
312 char *label = (char*) (getvalue ? getvalue(ls, elm, row, 0, getvaluedata, &freeResult) : elm);
310 if(label) { 313 if(label) {
311 s = XmStringCreateLocalized(label); 314 s = XmStringCreateLocalized(label);
312 XtSetArg(args[n], XmNlabelString, s); n++; 315 XtSetArg(args[n], XmNlabelString, s); n++;
313 } 316 }
314 XtSetArg(args[n], XmNpositionIndex, pos+i); n++; 317 XtSetArg(args[n], XmNpositionIndex, pos+i); n++;
339 XmNdestroyCallback, 342 XmNdestroyCallback,
340 (XtCallbackProc)ui_destroy_data, 343 (XtCallbackProc)ui_destroy_data,
341 eventdata); 344 eventdata);
342 } 345 }
343 346
347 if(freeResult) {
348 free(label);
349 }
350
344 elm = ui_list_next(ls); 351 elm = ui_list_next(ls);
352 row++;
345 i++; 353 i++;
346 } 354 }
347 355
348 list->oldcount = i; 356 list->oldcount = i;
349 } 357 }

mercurial