# HG changeset patch # User Olaf Wintermann # Date 1755599896 -7200 # Node ID 68f513430e5ac786dc65792138ec5d603ddf408f # Parent 4415b91e74bff537cfd2cda5f7a4f712db4206c1 implement ui_listbox_list_update (GTK) diff -r 4415b91e74bf -r 68f513430e5a ui/gtk/list.c --- 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) { diff -r 4415b91e74bf -r 68f513430e5a ui/gtk/list.h --- 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 {