Sat, 13 Dec 2025 16:26:27 +0100
implement static_elements arg for the listview (Cocoa)
--- a/ui/cocoa/ListDataSource.h Sat Dec 13 16:07:34 2025 +0100 +++ b/ui/cocoa/ListDataSource.h Sat Dec 13 16:26:27 2025 +0100 @@ -40,3 +40,11 @@ - (id) init:(NSArray<NSTableColumn*>*) columns var:(UiVar*)var getvalue:(ui_getvaluefunc2) getvaluefunc getvaluedata:(void*)userdata; @end + +@interface ArrayDataSource : NSObject <NSTableViewDataSource> + +@property NSMutableArray<NSString*> *data; + +- (id)init:(char**)elements size:(size_t)nelm; + +@end
--- a/ui/cocoa/ListDataSource.m Sat Dec 13 16:07:34 2025 +0100 +++ b/ui/cocoa/ListDataSource.m Sat Dec 13 16:26:27 2025 +0100 @@ -114,3 +114,27 @@ } @end + +@implementation ArrayDataSource + +- (id)init:(char**)elements size:(size_t)nelm { + _data = [[NSMutableArray alloc]init]; + for(int i=0;i<nelm;i++) { + NSString *s = [[NSString alloc]initWithUTF8String:elements[i]]; + _data[i] = s; + } + return self; +} + +- (NSInteger) numberOfRowsInTableView:(NSTableView *) tableView { + return _data.count; +} + +- (id) tableView:(NSTableView *) tableView +objectValueForTableColumn:(NSTableColumn *) tableColumn + row:(NSInteger) row +{ + return _data[row]; +} + +@end
--- a/ui/cocoa/list.m Sat Dec 13 16:07:34 2025 +0100 +++ b/ui/cocoa/list.m Sat Dec 13 16:26:27 2025 +0100 @@ -87,6 +87,8 @@ add_listdelegate(obj, tableview, args); + char **static_elements = args->static_elements; + size_t static_nelm = args->static_nelm; UiVar *var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); if(var) { UiList *list = var->value; @@ -112,6 +114,15 @@ [tableview reloadData]; objc_setAssociatedObject(tableview, "ui_datasource", dataSource, OBJC_ASSOCIATION_RETAIN); + } else if(static_elements && static_nelm) { + NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"column"]; + [tableview addTableColumn:column]; + + ArrayDataSource *dataSource = [[ArrayDataSource alloc]init:static_elements size:static_nelm]; + tableview.dataSource = dataSource; + [tableview reloadData]; + + objc_setAssociatedObject(tableview, "ui_datasource", dataSource, OBJC_ASSOCIATION_RETAIN); } return (__bridge void*)scrollview;