]> uap-core.de Git - note.git/commitdiff
fix sidebar update
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 13 May 2025 18:20:38 +0000 (20:20 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 13 May 2025 18:20:38 +0000 (20:20 +0200)
ui/gtk/list.c

index af11158166b71289a9a740211d6ff3743f5ff934..e5ffa58524c9e5b6002c9dc1839c71346f0fe53b 100644 (file)
@@ -1810,7 +1810,7 @@ UIEXPORT UIWIDGET ui_sourcelist_create(UiObject *obj, UiSourceListArgs args) {
             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 @@ void ui_listbox_dynamic_update(UiList *list, int x) {
     // 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;