# HG changeset patch # User Olaf Wintermann # Date 1760174604 -7200 # Node ID 6cbc74aeff13da26834e7e6bc428b53822b8a695 # Parent 7adbd6b7bf7c80922377621d04d900373659066a implement UiSubListEventData in sourcelist activate events diff -r 7adbd6b7bf7c -r 6cbc74aeff13 ui/cocoa/list.h --- a/ui/cocoa/list.h Sat Oct 11 10:37:00 2025 +0200 +++ b/ui/cocoa/list.h Sat Oct 11 11:23:24 2025 +0200 @@ -69,6 +69,10 @@ @property UiSubList *sublist; @property int index; +@property int sublistStartRow; +@property int rownum; + +@property void *eventdata; /* * Initialize a section item diff -r 7adbd6b7bf7c -r 6cbc74aeff13 ui/cocoa/list.m --- a/ui/cocoa/list.m Sat Oct 11 10:37:00 2025 +0200 +++ b/ui/cocoa/list.m Sat Oct 11 11:23:24 2025 +0200 @@ -412,7 +412,7 @@ scrollview.autohidesScrollers = YES; NSOutlineView *outline = [[NSOutlineView alloc]init]; - NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"label"]; + NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"x"]; [outline addTableColumn:column]; outline.outlineTableColumn = column; outline.headerView = NULL; @@ -423,7 +423,6 @@ outline.style = NSTableViewStyleSourceList; // Make background transparent so vibrancy shows through - //outline.backgroundColor = [NSColor clearColor]; scrollview.drawsBackground = NO; scrollview.documentView = outline; @@ -488,12 +487,16 @@ CxIterator i = cxListIterator(_sublists); int index = 0; + int rownum = 0; cx_foreach(UiSubList *, sl, i) { UiSourceListItem *section = [[UiSourceListItem alloc] init:self sublist:sl]; section.index = index; + section.rownum = rownum; + section.sublistStartRow = rownum; [section update:-1]; [_sections addObject:section]; index++; + rownum += 1 + section.items.count; } [_outlineView reloadData]; @@ -630,8 +633,8 @@ event.obj = _obj; event.window = event.obj->window; event.document = event.obj->ctx->document; - event.eventdata = NULL; // TODO - event.eventdatatype = 0; // TODO + event.eventdata = NULL; + event.eventdatatype = 0; event.intval = 0; event.set = ui_get_setop(); @@ -641,13 +644,18 @@ if(selectedRow >= 0) { UiSourceListItem *item = [_outlineView itemAtRow:selectedRow]; UiSourceListItem *parent = item.parent; + UiSubList *sublist = parent != nil ? parent.sublist : item.sublist; UiVar *var = parent != nil ? parent.var : item.var; if(item && var) { sublistEvent.list = var->value; - sublistEvent.sublist_index = parent.index; - // TODO + sublistEvent.sublist_index = parent ? parent.index : item.index; + sublistEvent.row_index = (int)selectedRow - item.sublistStartRow - 1; + sublistEvent.sublist_userdata = sublist ? sublist->userdata : NULL; + sublistEvent.event_data = item.eventdata; + sublistEvent.row_data = sublistEvent.list->get(sublistEvent.list, sublistEvent.row_index); event.eventdata = &sublistEvent; + event.eventdatatype = UI_EVENT_DATA_SUBLIST; } } @@ -685,6 +693,7 @@ if(item->label) { _label = [[NSString alloc]initWithUTF8String:item->label]; } + _eventdata = item->eventdata; return self; } @@ -710,7 +719,11 @@ item.label = strdup(elm); } - [_items addObject:[[UiSourceListItem alloc] init:&item parent:self]]; + UiSourceListItem *it = [[UiSourceListItem alloc] init:&item parent:self]; + it.index = index; + it.rownum = self.rownum + index; + it.sublistStartRow = _parent ? _parent.sublistStartRow : _sublistStartRow; + [_items addObject:it]; elm = list->next(list); index++;