--- 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];