# HG changeset patch # User Olaf Wintermann # Date 1747160564 -7200 # Node ID c69a71927d9c89292aeab910fb46fedab8827e91 # Parent 637de2359995c6bb9c5f9281e89c12b3eb292f4f# Parent 07ecff1fa805741baabe0f86983b0090495de6e2 merge diff -r 07ecff1fa805 -r c69a71927d9c ui/gtk/list.c --- a/ui/gtk/list.c Sun May 11 18:56:49 2025 +0200 +++ b/ui/gtk/list.c Tue May 13 20:22:44 2025 +0200 @@ -1810,7 +1810,7 @@ list->obj = uilistbox; list->update = ui_listbox_dynamic_update; - ui_listbox_dynamic_update(list, 0); + ui_listbox_dynamic_update(list, -1); } } @@ -1843,6 +1843,15 @@ // unbind/free previous list vars CxIterator i = cxListIterator(uilistbox->sublists); cx_foreach(UiListBoxSubList *, s, i) { + // TODO: "unbind/free previous list vars" will also remove + // the widget list. This makes the widget optimization + // in ui_listbox_update_sublist pointless + // Is it actually possible to not recreate the whole list? + CxIterator r = cxListIterator(s->widgets); + cx_foreach(GtkWidget*, widget, r) { + LISTBOX_REMOVE(uilistbox->listbox, widget); + } + if(s->var) { UiList *sl = s->var->value; sl->obj = NULL;