From: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> This implements same buggy style as native, where cancelBubble = false does not affect the immediate propagation flag, while it does affect normal propagation flag. Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> --- dlls/mshtml/htmlevent.c | 11 ++++++----- dlls/mshtml/tests/events.js | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 809d4d5915c..24eb6ca7832 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -4264,8 +4264,7 @@ static void call_event_handlers(EventTarget *event_target, DOMEvent *event, disp } } - for(listener = listeners; !event->stop_immediate_propagation - && listener < listeners + listeners_cnt; listener++) { + for(listener = listeners; listener < listeners + listeners_cnt; listener++) { if(listener->type != LISTENER_TYPE_ATTACHED) { DISPID named_arg = DISPID_THIS; VARIANTARG args[2]; @@ -4328,10 +4327,12 @@ static void call_event_handlers(EventTarget *event_target, DOMEvent *event, disp WARN("%p %s attached <<< %08lx\n", event_target, debugstr_w(event->type), hres); } } - } - if(event->stop_immediate_propagation) - nsIDOMEvent_StopImmediatePropagation(event->nsevent); + if(event->stop_immediate_propagation) { + nsIDOMEvent_StopImmediatePropagation(event->nsevent); + break; + } + } for(listener = listeners; listener < listeners + listeners_cnt; listener++) IDispatch_Release(listener->function); diff --git a/dlls/mshtml/tests/events.js b/dlls/mshtml/tests/events.js index 2e8e87b0a72..96d33f0181c 100644 --- a/dlls/mshtml/tests/events.js +++ b/dlls/mshtml/tests/events.js @@ -360,7 +360,6 @@ sync_test("stop_propagation", function() { div2.removeEventListener("click", stop_immediate_propagation, true); calls = ""; div2.click(); - todo_wine. ok(calls === "cancelBubble(false),div1.click(capture),cancelBubble[1],stop,div2.click(capture),immediateStop and cancelBubble(false),cancelBubble[2],", // weird native behavior "calls = " + calls); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6096