--- a/ui/qt/list.cpp Wed Jun 25 21:59:36 2025 +0200 +++ b/ui/qt/list.cpp Wed Jun 25 22:14:25 2025 +0200 @@ -37,17 +37,32 @@ return column == 0 ? elm : NULL; } +static void* getvalue_wrapper(UiList *list, void *elm, int row, int col, void *userdata) { + ui_getvaluefunc getvalue = (ui_getvaluefunc)userdata; + return getvalue(elm, col); +} UIWIDGET ui_listview_create(UiObject* obj, UiListArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); UI_APPLY_LAYOUT(ctn->layout, args); QListView *view = new QListView(); + ui_getvaluefunc2 getvalue = nullptr; + void *getvaluedata = nullptr; + if(args->getvalue2) { + getvalue = args->getvalue2; + getvaluedata = args->getvalue2data; + } else if(args->getvalue) { + getvalue = getvalue_wrapper; + getvaluedata = (void*)args->getvalue; + } else { + getvalue = getvalue_wrapper; + getvaluedata = (void*)ui_strmodel_getvalue; + } - ui_getvaluefunc getvalue = args->getvalue ? args->getvalue : ui_strmodel_getvalue; UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); - ListModel *model = new ListModel(obj, view, var, getvalue); + ListModel *model = new ListModel(obj, view, var, getvalue, getvaluedata); view->setModel(model); if(var) {