Jacek Caban : mshtml: Added IDOMEvent::get_srcElement implementation.
Module: wine Branch: master Commit: 07954f36215ebef81205437f0ae87b38f0505d86 URL: https://source.winehq.org/git/wine.git/?a=commit;h=07954f36215ebef81205437f0... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Jan 24 17:38:12 2018 +0100 mshtml: Added IDOMEvent::get_srcElement implementation. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlevent.c | 20 ++++++++++++++------ dlls/mshtml/tests/events.js | 3 +++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index abc0a1c..8e977f1 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -396,10 +396,12 @@ static HRESULT WINAPI HTMLEventObj_get_srcElement(IHTMLEventObj *iface, IHTMLEle TRACE("(%p)->(%p)\n", This, p); - *p = NULL; - if(This->event && This->event->target) - IDispatchEx_QueryInterface(&This->event->target->dispex.IDispatchEx_iface, &IID_IHTMLElement, (void**)p); - return S_OK; + if(!This->event) { + *p = NULL; + return S_OK; + } + + return IDOMEvent_get_srcElement(&This->event->IDOMEvent_iface, p); } static HRESULT WINAPI HTMLEventObj_get_altKey(IHTMLEventObj *iface, VARIANT_BOOL *p) @@ -1167,8 +1169,14 @@ static HRESULT WINAPI DOMEvent_get_cancelBubble(IDOMEvent *iface, VARIANT_BOOL * static HRESULT WINAPI DOMEvent_get_srcElement(IDOMEvent *iface, IHTMLElement **p) { DOMEvent *This = impl_from_IDOMEvent(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, p); + + if(This->target) + IDispatchEx_QueryInterface(&This->target->dispex.IDispatchEx_iface, &IID_IHTMLElement, (void**)p); + else + *p = NULL; + return S_OK; } static const IDOMEventVtbl DOMEventVtbl = { diff --git a/dlls/mshtml/tests/events.js b/dlls/mshtml/tests/events.js index f471b86..30d23c7 100644 --- a/dlls/mshtml/tests/events.js +++ b/dlls/mshtml/tests/events.js @@ -469,6 +469,7 @@ function test_dispatch_event() { return function(event) { ok(event === e, "event != e"); ok(event.target === child, "target != child"); + ok(event.srcElement === child, "srcElement != child"); calls += msg + ","; }; } @@ -485,12 +486,14 @@ function test_dispatch_event() { e = document.createEvent("Event"); e.initEvent("click", true, true); ok(e.target === null, "e.target != null"); + ok(e.srcElement === null, "e.srcElement != null"); calls = ""; child.dispatchEvent(e); ok(calls === "parent.click(capture),child.click(capture),child.click(bubble)," + "parent.click(bubble),", "calls = " + calls); ok(e.target === child, "e.target != child"); + ok(e.srcElement === child, "e.srcElement != child"); ok(e.currentTarget === null, "e.currentTarget != null"); e = document.createEvent("Event");
participants (1)
-
Alexandre Julliard