list->obj = uilistbox;
list->update = ui_listbox_dynamic_update;
- ui_listbox_dynamic_update(list, 0);
+ ui_listbox_dynamic_update(list, -1);
}
}
// 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;