implement ui_listbox_list_update (GTK)

Tue, 19 Aug 2025 12:38:16 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 19 Aug 2025 12:38:16 +0200
changeset 696
68f513430e5a
parent 695
4415b91e74bf
child 697
d254b3ec7736

implement ui_listbox_list_update (GTK)

ui/gtk/list.c file | annotate | diff | comparison | revisions
ui/gtk/list.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/list.c	Mon Aug 18 21:11:32 2025 +0200
+++ b/ui/gtk/list.c	Tue Aug 19 12:38:16 2025 +0200
@@ -1807,7 +1807,9 @@
     uisublist.listbox = uilistbox;
     uisublist.userdata = sublist->userdata;
     uisublist.index = cxListSize(sublists);
-
+    uisublist.startpos = 0;
+    cxListAdd(sublists, &uisublist);
+    
     // bind UiList
     UiListBoxSubList *sublist_ptr = cxListAt(uilistbox->sublists, cxListSize(sublists)-1);
     if(uisublist.var && uisublist.var->value) {
@@ -1815,8 +1817,6 @@
         list->obj = sublist_ptr;
         list->update = ui_listbox_list_update;
     }
-
-    cxListAdd(sublists, &uisublist);
 }
 
 UIEXPORT UIWIDGET ui_sourcelist_create(UiObject *obj, UiSourceListArgs *args) {
@@ -1963,6 +1963,7 @@
         }
         
         // reload sublist
+        sublist->startpos = pos;
         ui_listbox_update_sublist(listbox, sublist, pos);
         pos += sublist->numitems;
     }
@@ -2069,6 +2070,7 @@
 
 void ui_listbox_list_update(UiList *list, int i) {
     UiListBoxSubList *sublist = list->obj;
+    ui_listbox_update_sublist(sublist->listbox, sublist, sublist->startpos);
 }
 
 void ui_listbox_row_activate(GtkListBox *self, GtkListBoxRow *row, gpointer user_data) {
--- a/ui/gtk/list.h	Mon Aug 18 21:11:32 2025 +0200
+++ b/ui/gtk/list.h	Tue Aug 19 12:38:16 2025 +0200
@@ -91,6 +91,7 @@
     UiListBox   *listbox;
     void        *userdata;
     size_t      index;
+    size_t      startpos;
 } UiListBoxSubList;
 
 struct UiListBox {

mercurial