add additional userdata parameter to sourcelist getvalue func

Sat, 12 Jul 2025 15:07:27 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 12 Jul 2025 15:07:27 +0200
changeset 653
dc0eb8151254
parent 652
4c9c02fd5ef7
child 654
e379d2e3c1b3

add additional userdata parameter to sourcelist getvalue func

application/main.c file | annotate | diff | comparison | revisions
ui/common/args.c file | annotate | diff | comparison | revisions
ui/common/args.h file | annotate | diff | comparison | revisions
ui/gtk/list.c file | annotate | diff | comparison | revisions
ui/gtk/list.h file | annotate | diff | comparison | revisions
ui/ui/tree.h file | annotate | diff | comparison | revisions
--- a/application/main.c	Sat Jul 12 12:58:52 2025 +0200
+++ b/application/main.c	Sat Jul 12 15:07:27 2025 +0200
@@ -447,7 +447,7 @@
     return NULL;
 }
 
-void sourcelist_getvalue(void *sublistdata, void *rowdata, int index, UiSubListItem *item) {
+void sourcelist_getvalue(void *sublistdata, void *rowdata, int index, UiSubListItem *item, void *userdata) {
     item->label = strdup(rowdata);
     item->eventdata = sublistdata;
 }
--- a/ui/common/args.c	Sat Jul 12 12:58:52 2025 +0200
+++ b/ui/common/args.c	Sat Jul 12 15:07:27 2025 +0200
@@ -1050,6 +1050,9 @@
     args->getvalue = getvalue;
 }
 
+void ui_sourcelist_args_set_getvalue_userdata(UiSourceListArgs *args, void *userdata) {
+    args->getvaluedata = userdata;
+}
 
 void ui_sourcelist_args_set_onactivate(UiSourceListArgs *args, ui_callback callback) {
     args->onactivate = callback;
--- a/ui/common/args.h	Sat Jul 12 12:58:52 2025 +0200
+++ b/ui/common/args.h	Sat Jul 12 15:07:27 2025 +0200
@@ -250,6 +250,7 @@
 UIEXPORT void ui_sourcelist_args_set_varname(UiSourceListArgs *args, const char *varname);
 UIEXPORT void ui_sourcelist_args_set_dynamic_sublists(UiSourceListArgs *args, UiList *value);
 UIEXPORT void ui_sourcelist_args_set_getvalue_func(UiSourceListArgs *args, ui_sublist_getvalue_func getvalue);
+UIEXPORT void ui_sourcelist_args_set_getvalue_userdata(UiSourceListArgs *args, void *userdata);
 UIEXPORT void ui_sourcelist_args_set_onactivate(UiSourceListArgs *args, ui_callback callback);
 UIEXPORT void ui_sourcelist_args_set_onactivatedata(UiSourceListArgs *args, void *userdata);
 UIEXPORT void ui_sourcelist_args_set_onbuttonclick(UiSourceListArgs *args, ui_callback callback);
--- a/ui/gtk/list.c	Sat Jul 12 12:58:52 2025 +0200
+++ b/ui/gtk/list.c	Sat Jul 12 15:07:27 2025 +0200
@@ -1835,6 +1835,7 @@
     uilistbox->obj = obj;
     uilistbox->listbox = GTK_LIST_BOX(listbox);
     uilistbox->getvalue = args->getvalue;
+    uilistbox->getvaluedata = args->getvaluedata;
     uilistbox->onactivate = args->onactivate;
     uilistbox->onactivatedata = args->onactivatedata;
     uilistbox->onbuttonclick = args->onbuttonclick;
@@ -2007,7 +2008,7 @@
     void *elm = list->first(list);
     while(elm) {
         UiSubListItem item = { NULL, NULL, NULL, NULL, NULL, NULL };
-        listbox->getvalue(sublist->userdata, elm, index, &item);
+        listbox->getvalue(sublist->userdata, elm, index, &item, listbox->getvaluedata);
         
         // create listbox item
         GtkWidget *row = create_listbox_row(listbox, sublist, &item, (int)index);
--- a/ui/gtk/list.h	Sat Jul 12 12:58:52 2025 +0200
+++ b/ui/gtk/list.h	Sat Jul 12 15:07:27 2025 +0200
@@ -98,6 +98,7 @@
     GtkListBox               *listbox;
     CxList                   *sublists; // contains UiListBoxSubList elements
     ui_sublist_getvalue_func getvalue;
+    void                     *getvaluedata;
     ui_callback              onactivate;
     void                     *onactivatedata;
     ui_callback              onbuttonclick;
--- a/ui/ui/tree.h	Sat Jul 12 12:58:52 2025 +0200
+++ b/ui/ui/tree.h	Sat Jul 12 15:07:27 2025 +0200
@@ -150,7 +150,7 @@
     const int *groups;
 };
 
-typedef void (*ui_sublist_getvalue_func)(void *sublist_userdata, void *rowdata, int index, UiSubListItem *item);
+typedef void (*ui_sublist_getvalue_func)(void *sublist_userdata, void *rowdata, int index, UiSubListItem *item, void *userdata);
 
 struct UiSubList {
     UiList *value;
@@ -233,6 +233,11 @@
     ui_sublist_getvalue_func getvalue;
     
     /*
+     * getvalue_func userdata
+     */
+    void *getvaluedata;
+    
+    /*
      * activated when a list item is selected
      */
     ui_callback onactivate;

mercurial