ui/cocoa/list.m

changeset 1156
cc488843c92b
parent 1057
b0bc313dea43
child 1157
0a9f4d689c12
--- a/ui/cocoa/list.m	Sun May 31 14:09:31 2026 +0200
+++ b/ui/cocoa/list.m	Mon Jun 01 20:07:13 2026 +0200
@@ -508,18 +508,37 @@
     
     [_sections removeAllObjects];
     
-    CxIterator i = cxListIterator(_sublists);
-    int index = 0;
-    int rownum = 0;
-    cx_foreach(UiSubList *, sl, i) {
-        UiSourceListItem *section = [[UiSourceListItem alloc] init:self sublist:sl];
-        section.sublistIndex = index;
-        section.rownum = rownum;
-        section.sublistStartRow = rownum;
-        [section update:-1];
-        [_sections addObject:section];
-        index++;
-        rownum += 1 + section.items.count;
+    if(_sublists) {
+        CxIterator i = cxListIterator(_sublists);
+        int index = 0;
+        int rownum = 0;
+        cx_foreach(UiSubList *, sl, i) {
+            UiSourceListItem *section = [[UiSourceListItem alloc] init:self sublist:sl];
+            section.sublistIndex = index;
+            section.rownum = rownum;
+            section.sublistStartRow = rownum;
+            [section update:-1];
+            [_sections addObject:section];
+            index++;
+            rownum += 1 + section.items.count;
+        }
+    } else if (_dynamic_sublists) {
+        UiList *sublists = _dynamic_sublists->value;
+        UiSubList *sl = sublists->first(sublists);
+        int index = 0;
+        int rownum = 0;
+        while(sl) {
+            UiSourceListItem *section = [[UiSourceListItem alloc] init:self sublist:sl];
+            section.sublistIndex = index;
+            section.rownum = rownum;
+            section.sublistStartRow = rownum;
+            [section update:-1];
+            [_sections addObject:section];
+            index++;
+            rownum += 1 + section.items.count;
+            
+            sl = sublists->next(sublists);
+        }
     }
     
     [_outlineView reloadData];

mercurial