ui/cocoa/list.m

changeset 833
6cbc74aeff13
parent 832
7adbd6b7bf7c
child 834
8801df33144f
--- 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++;

mercurial