mshtml: Always use the event target dispex.

The event target may be from a different document to the document associated with the
event handler.
This commit is contained in:
Brendan McGrath 2024-02-26 14:39:01 +11:00 committed by Alexandre Julliard
parent 34a8478da8
commit 74ff9f2371
2 changed files with 2 additions and 6 deletions

View file

@ -444,7 +444,7 @@ static nsresult handle_htmlevent(HTMLDocumentNode *doc, nsIDOMEvent *nsevent)
target = &node->event_target;
}
hres = create_event_from_nsevent(nsevent, dispex_compat_mode(&doc->node.event_target.dispex), &event);
hres = create_event_from_nsevent(nsevent, dispex_compat_mode(&target->dispex), &event);
if(FAILED(hres)) {
IEventTarget_Release(&target->IEventTarget_iface);
return NS_OK;

View file

@ -12084,18 +12084,14 @@ static void test_document_mode_after_initnew(void)
}
hres = IHTMLDocument2_QueryInterface(doc, &IID_IEventTarget, (void**)&event_target);
todo_wine
ok(hres == S_OK, "QueryInterface(IID_IEventTarget) returned %08lx.\n", hres);
todo_wine
ok(event_target != NULL, "event_target == NULL\n");
if (event_target != NULL)
IEventTarget_Release(event_target);
IEventTarget_Release(event_target);
V_VT(&var) = VT_EMPTY;
hres = IHTMLDocument6_get_documentMode(doc6, &var);
ok(hres == S_OK, "get_documentMode failed: %08lx\n", hres);
ok(V_VT(&var) == VT_R4, "V_VT(documentMode) = %u\n", V_VT(&var));
todo_wine
ok(V_R4(&var) == 9, "documentMode = %f, expected 9\n", V_R4(&var));
IHTMLDocument6_Release(doc6);
VariantClear(&var);