Module: wine Branch: master Commit: 07954f36215ebef81205437f0ae87b38f0505d86 URL: https://source.winehq.org/git/wine.git/?a=commit;h=07954f36215ebef81205437f0...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Jan 24 17:38:12 2018 +0100
mshtml: Added IDOMEvent::get_srcElement implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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");