ui/common/action.c

changeset 1184
2436f03c8aca
parent 1183
51c0e1053592
--- a/ui/common/action.c	Sun Jun 07 17:43:15 2026 +0200
+++ b/ui/common/action.c	Sun Jun 07 19:56:21 2026 +0200
@@ -180,7 +180,7 @@
     return ret;
 }
 
-static void call_action_recursive(const char *action_name, UiContext *ctx, void *eventdata, UiEventType eventdatatype, int intval) {
+static void call_action_recursive(const char *action_name, UiContext *ctx, void *eventdata, UiEventType eventdatatype, int intval, UiBool call_children) {
     UiEvent event;
     memset(&event, 0, sizeof(UiEvent));
     event.obj = ctx->obj;
@@ -200,10 +200,12 @@
         a->callback(&event, a->userdata);
     }
     
-    CxIterator i = cxListIterator(ctx->documents);
-    cx_foreach(void *, doc, i) {
-        UiContext *doc_ctx = ui_document_context(doc);
-        call_action_recursive(action_name, doc_ctx, eventdata, eventdatatype, intval);
+    if(call_children) {
+        CxIterator i = cxListIterator(ctx->documents);
+        cx_foreach(void *, doc, i) {
+            UiContext *doc_ctx = ui_document_context(doc);
+            call_action_recursive(action_name, doc_ctx, eventdata, eventdatatype, intval, TRUE);
+        }
     }
 }
 
@@ -211,8 +213,10 @@
     CxList *objects = uic_object_list();
     CxIterator i = cxListIterator(objects);
     cx_foreach(UiObject*, obj, i) {
-        call_action_recursive(action_name, obj->ctx, eventdata, eventdatatype, intval);
+        call_action_recursive(action_name, obj->ctx, eventdata, eventdatatype, intval, TRUE);
     }
+    
+    call_action_recursive(action_name, ui_global_context(), eventdata, eventdatatype, intval, FALSE);
 }
 
 void ui_broadcast_action(const char *action_name) {

mercurial