ui/qt/list.cpp

changeset 634
14016ce0a434
parent 597
fc85ca42a7ce
child 637
6a2c744fe042
--- 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) {

mercurial