ui/cocoa/ListDelegate.m

changeset 1163
a32411b88442
parent 1157
0a9f4d689c12
--- 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);
+        }
     }
 }
 

mercurial