diff --git a/src/events/event_target.c b/src/events/event_target.c index bd7e67b..eafe490 100644 --- a/src/events/event_target.c +++ b/src/events/event_target.c @@ -227,11 +227,15 @@ dom_exception _dom_event_target_dispatch(dom_event_target *et, if (dom_string_isequal(le->type, evt->type)) { assert(le->listener->handler != NULL); + bool ancestor = evt->current != evt->target; + if ((le->capture && - phase == DOM_CAPTURING_PHASE) || + phase == DOM_CAPTURING_PHASE && + ancestor) || (le->capture == false && evt->bubble && - phase == DOM_BUBBLING_PHASE) || + phase == DOM_BUBBLING_PHASE && + ancestor) || (evt->target == evt->current && phase == DOM_AT_TARGET)) { le->listener->handler(evt,