Jacek Caban : mshtml: Added IDOMEvent::get_srcElement implementation.

Alexandre Julliard julliard at winehq.org
Wed Jan 24 16:02:32 CST 2018


Module: wine
Branch: master
Commit: 07954f36215ebef81205437f0ae87b38f0505d86
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=07954f36215ebef81205437f0ae87b38f0505d86

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Jan 24 17:38:12 2018 +0100

mshtml: Added IDOMEvent::get_srcElement implementation.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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");




More information about the wine-cvs mailing list