Module: wine Branch: master Commit: beb0b78a5a332902d6a8ab18f1a98152f3dcd2ac URL: https://source.winehq.org/git/wine.git/?a=commit;h=beb0b78a5a332902d6a8ab18f...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Feb 21 15:20:04 2018 +0100
mshtml: Added IDOMMouseEvent::fromElement property implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/htmlevent.c | 23 +++++++++++++++++++++-- dlls/mshtml/tests/events.js | 1 + 2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index e9a4731..0011baa 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -1580,8 +1580,27 @@ static HRESULT WINAPI DOMMouseEvent_get_buttons(IDOMMouseEvent *iface, USHORT *p static HRESULT WINAPI DOMMouseEvent_get_fromElement(IDOMMouseEvent *iface, IHTMLElement **p) { DOMEvent *This = impl_from_IDOMMouseEvent(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + IEventTarget *related_target = NULL; + + TRACE("(%p)->(%p)\n", This, p); + + if(This->event_id != EVENTID_LAST) { + HRESULT hres = S_OK; + if(event_info[This->event_id].flags & EVENT_MOUSE_FROM_RELATED) + hres = IDOMMouseEvent_get_relatedTarget(&This->IDOMMouseEvent_iface, &related_target); + else if(event_info[This->event_id].flags & EVENT_MOUSE_TO_RELATED) + hres = IDOMEvent_get_target(&This->IDOMEvent_iface, &related_target); + if(FAILED(hres)) + return hres; + } + + if(!related_target) { + *p = NULL; + return S_OK; + } + + IEventTarget_QueryInterface(related_target, &IID_IHTMLElement, (void**)p); + return S_OK; }
static HRESULT WINAPI DOMMouseEvent_get_toElement(IDOMMouseEvent *iface, IHTMLElement **p) diff --git a/dlls/mshtml/tests/events.js b/dlls/mshtml/tests/events.js index a15ee51..7db440a 100644 --- a/dlls/mshtml/tests/events.js +++ b/dlls/mshtml/tests/events.js @@ -633,6 +633,7 @@ function test_mouse_event() { ok(e.which === 1, "which = " + e.which); ok(e.relatedTarget === null, "relatedTarget = " + e.relatedTarget); ok(e.toElement === null, "toElement = " + e.toElement); + ok(e.fromElement === null, "fromElement = " + e.fromElement);
e.initMouseEvent("test", true, true, window, 1, 2, 3, 4, 5, false, false, false, false, 1, document); ok(e.type === "test", "type = " + e.type);