# HG changeset patch # User Olaf Wintermann # Date 1780509519 -7200 # Node ID a32411b88442e2618e7beefd64869d5dd78f1d51 # Parent 3a2bf179557987a6d7251c0e250c7ccd39ccc2d7 implement actions for list/table events (Cocoa) diff -r 3a2bf1795579 -r a32411b88442 ui/cocoa/ListDelegate.h --- a/ui/cocoa/ListDelegate.h Wed Jun 03 19:07:24 2026 +0200 +++ b/ui/cocoa/ListDelegate.h Wed Jun 03 19:58:39 2026 +0200 @@ -34,8 +34,10 @@ @property UiObject *obj; @property ui_callback onselection; @property void *onselectiondata; +@property NSString *onselection_action; @property ui_callback onactivate; @property void *onactivatedata; +@property NSString *onactivate_action; - (id)init:(NSTableView*) tableview obj:(UiObject*)obj; diff -r 3a2bf1795579 -r a32411b88442 ui/cocoa/ListDelegate.m --- a/ui/cocoa/ListDelegate.m Wed Jun 03 19:07:24 2026 +0200 +++ b/ui/cocoa/ListDelegate.m Wed Jun 03 19:58:39 2026 +0200 @@ -38,31 +38,36 @@ - (void)activateEvent:(id)sender { NSTableView *table = sender; + + int row = (int)table.clickedRow; + + UiListSelection sel; + sel.count = 1; + sel.rows = &row; + + UiEvent event; + event.obj = _obj; + event.window = event.obj->window; + event.document = event.obj->ctx->document; + event.eventdata = &sel; + event.eventdatatype = UI_EVENT_DATA_LIST_SELECTION; + event.intval = row; + event.set = ui_get_setop(); + if(_onactivate) { - int row = (int)table.clickedRow; - - UiListSelection sel; - sel.count = 1; - sel.rows = &row; - - UiEvent event; - event.obj = _obj; - event.window = event.obj->window; - event.document = event.obj->ctx->document; - event.eventdata = &sel; - event.eventdatatype = UI_EVENT_DATA_LIST_SELECTION; - event.intval = row; - event.set = ui_get_setop(); - _onactivate(&event, _onactivatedata); } + + if(_onselection_action) { + uic_action_callback(&event, _onselection_action.UTF8String); + } } - (void) tableViewSelectionDidChange:(NSNotification *) notification { - if(_onselection && ui_selection_events_is_enabled()) { + if(ui_selection_events_is_enabled()) { UiListSelection sel = ui_tableview_selection(_tableview); - UiEvent event; + UiEvent event; event.obj = _obj; event.window = event.obj->window; event.document = event.obj->ctx->document; @@ -70,7 +75,14 @@ event.eventdatatype = UI_EVENT_DATA_LIST_SELECTION; event.intval = 0; event.set = ui_get_setop(); - _onselection(&event, _onselectiondata); + + if(_onselection) { + _onselection(&event, _onselectiondata); + } + + if(_onselection_action) { + uic_action_callback(&event, _onselection_action.UTF8String); + } } } diff -r 3a2bf1795579 -r a32411b88442 ui/cocoa/container.m --- a/ui/cocoa/container.m Wed Jun 03 19:07:24 2026 +0200 +++ b/ui/cocoa/container.m Wed Jun 03 19:58:39 2026 +0200 @@ -143,6 +143,16 @@ return (__bridge void*)scrollview; } +static int64_t tabview_get(UiInteger *i) { + NSView *tabview = (__bridge id)i->obj; + return 0; +} + +static void tabview_set(UiInteger *i, int64_t value) { + NSView *tabview = (__bridge id)i->obj; + +} + UIWIDGET ui_tabview_create(UiObject *obj, UiTabViewArgs *args) { NSView *tabview; switch(args->tabview) { diff -r 3a2bf1795579 -r a32411b88442 ui/cocoa/list.m --- a/ui/cocoa/list.m Wed Jun 03 19:07:24 2026 +0200 +++ b/ui/cocoa/list.m Wed Jun 03 19:58:39 2026 +0200 @@ -54,8 +54,14 @@ ListDelegate *delegate = [[ListDelegate alloc] init:tableview obj:obj]; delegate.onactivate = args->onactivate; delegate.onactivatedata = args->onactivatedata; + if(args->onactivate_action) { + delegate.onactivate_action = [[NSString alloc]initWithUTF8String:args->onactivate_action]; + } delegate.onselection = args->onselection; delegate.onselectiondata = args->onselectiondata; + if(args->onselection_action) { + delegate.onselection_action = [[NSString alloc]initWithUTF8String:args->onselection_action]; + } tableview.delegate = delegate; objc_setAssociatedObject(tableview, "ui_listdelegate", delegate, OBJC_ASSOCIATION_RETAIN); tableview.doubleAction = @selector(activateEvent:);