mshtml: Expose IHTMLUIEvent to scripts.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2018-02-06 00:09:35 +01:00 committed by Alexandre Julliard
parent 18ae7c7deb
commit 20159346c7
3 changed files with 54 additions and 3 deletions

View File

@ -1647,8 +1647,21 @@ static dispex_static_data_t DOMEvent_dispex = {
DOMEvent_iface_tids DOMEvent_iface_tids
}; };
static const tid_t DOMUIEvent_iface_tids[] = {
IDOMEvent_tid,
IDOMUIEvent_tid,
0
};
static dispex_static_data_t DOMUIEvent_dispex = {
NULL,
DispDOMUIEvent_tid,
DOMUIEvent_iface_tids
};
static const tid_t DOMMouseEvent_iface_tids[] = { static const tid_t DOMMouseEvent_iface_tids[] = {
IDOMEvent_tid, IDOMEvent_tid,
IDOMUIEvent_tid,
IDOMMouseEvent_tid, IDOMMouseEvent_tid,
0 0
}; };
@ -1694,7 +1707,9 @@ static DOMEvent *alloc_event(nsIDOMEvent *nsevent, eventid_t event_id)
- time_epoch; - time_epoch;
nsres = nsIDOMEvent_QueryInterface(nsevent, &IID_nsIDOMUIEvent, (void**)&event->ui_event); nsres = nsIDOMEvent_QueryInterface(nsevent, &IID_nsIDOMUIEvent, (void**)&event->ui_event);
if(NS_FAILED(nsres)) if(NS_SUCCEEDED(nsres))
dispex_data = &DOMUIEvent_dispex;
else
event->ui_event = NULL; event->ui_event = NULL;
nsres = nsIDOMEvent_QueryInterface(nsevent, &IID_nsIDOMMouseEvent, (void**)&event->mouse_event); nsres = nsIDOMEvent_QueryInterface(nsevent, &IID_nsIDOMMouseEvent, (void**)&event->mouse_event);

View File

@ -82,6 +82,7 @@ typedef struct EventTarget EventTarget;
XDIID(DispDOMChildrenCollection) \ XDIID(DispDOMChildrenCollection) \
XDIID(DispDOMEvent) \ XDIID(DispDOMEvent) \
XDIID(DispDOMMouseEvent) \ XDIID(DispDOMMouseEvent) \
XDIID(DispDOMUIEvent) \
XDIID(DispHTMLAnchorElement) \ XDIID(DispHTMLAnchorElement) \
XDIID(DispHTMLAreaElement) \ XDIID(DispHTMLAreaElement) \
XDIID(DispHTMLAttributeCollection) \ XDIID(DispHTMLAttributeCollection) \
@ -130,6 +131,7 @@ typedef struct EventTarget EventTarget;
XDIID(HTMLElementEvents2) \ XDIID(HTMLElementEvents2) \
XIID(IDOMEvent) \ XIID(IDOMEvent) \
XIID(IDOMMouseEvent) \ XIID(IDOMMouseEvent) \
XIID(IDOMUIEvent) \
XIID(IDocumentEvent) \ XIID(IDocumentEvent) \
XIID(IDocumentSelector) \ XIID(IDocumentSelector) \
XIID(IElementSelector) \ XIID(IElementSelector) \

View File

@ -610,6 +610,7 @@ function test_mouse_event() {
ok(e.type === "test", "type = " + e.type); ok(e.type === "test", "type = " + e.type);
ok(e.cancelable === true, "cancelable = " + e.cancelable); ok(e.cancelable === true, "cancelable = " + e.cancelable);
ok(e.bubbles === true, "bubbles = " + e.bubbles); ok(e.bubbles === true, "bubbles = " + e.bubbles);
ok(e.detail === 1, "detail = " + e.detail);
ok(e.screenX === 2, "screenX = " + e.screenX); ok(e.screenX === 2, "screenX = " + e.screenX);
ok(e.screenY === 3, "screenY = " + e.screenY); ok(e.screenY === 3, "screenY = " + e.screenY);
ok(e.clientX === 4, "clientX = " + e.clientX); ok(e.clientX === 4, "clientX = " + e.clientX);
@ -624,6 +625,7 @@ function test_mouse_event() {
ok(e.type === "test", "type = " + e.type); ok(e.type === "test", "type = " + e.type);
ok(e.cancelable === false, "cancelable = " + e.cancelable); ok(e.cancelable === false, "cancelable = " + e.cancelable);
ok(e.bubbles === false, "bubbles = " + e.bubbles); ok(e.bubbles === false, "bubbles = " + e.bubbles);
ok(e.detail === 9, "detail = " + e.detail);
ok(e.screenX === 8, "screenX = " + e.screenX); ok(e.screenX === 8, "screenX = " + e.screenX);
ok(e.screenY === 7, "screenY = " + e.screenY); ok(e.screenY === 7, "screenY = " + e.screenY);
ok(e.clientX === 6, "clientX = " + e.clientX); ok(e.clientX === 6, "clientX = " + e.clientX);
@ -638,6 +640,7 @@ function test_mouse_event() {
ok(e.type === "testevent", "type = " + e.type); ok(e.type === "testevent", "type = " + e.type);
ok(e.cancelable === true, "cancelable = " + e.cancelable); ok(e.cancelable === true, "cancelable = " + e.cancelable);
ok(e.bubbles === true, "bubbles = " + e.bubbles); ok(e.bubbles === true, "bubbles = " + e.bubbles);
ok(e.detail === 9, "detail = " + e.detail);
ok(e.screenX === 8, "screenX = " + e.screenX); ok(e.screenX === 8, "screenX = " + e.screenX);
ok(e.screenY === 7, "screenY = " + e.screenY); ok(e.screenY === 7, "screenY = " + e.screenY);
ok(e.clientX === 6, "clientX = " + e.clientX); ok(e.clientX === 6, "clientX = " + e.clientX);
@ -648,6 +651,36 @@ function test_mouse_event() {
ok(e.metaKey === true, "metaKey = " + e.metaKey); ok(e.metaKey === true, "metaKey = " + e.metaKey);
ok(e.button === 127, "button = " + e.button); ok(e.button === 127, "button = " + e.button);
e.initUIEvent("testevent", true, true, window, 6);
ok(e.type === "testevent", "type = " + e.type);
ok(e.cancelable === true, "cancelable = " + e.cancelable);
ok(e.bubbles === true, "bubbles = " + e.bubbles);
ok(e.detail === 6, "detail = " + e.detail);
ok(e.screenX === 8, "screenX = " + e.screenX);
ok(e.screenY === 7, "screenY = " + e.screenY);
ok(e.clientX === 6, "clientX = " + e.clientX);
ok(e.clientY === 5, "clientY = " + e.clientY);
ok(e.ctrlKey === true, "ctrlKey = " + e.ctrlKey);
ok(e.altKey === true, "altKey = " + e.altKey);
ok(e.shiftKey === true, "shiftKey = " + e.shiftKey);
ok(e.metaKey === true, "metaKey = " + e.metaKey);
ok(e.button === 127, "button = " + e.button);
next_test();
}
function test_ui_event() {
var e;
e = document.createEvent("UIEvent");
ok(e.detail === 0, "detail = " + e.detail);
e.initUIEvent("test", true, true, window, 3);
ok(e.type === "test", "type = " + e.type);
ok(e.cancelable === true, "cancelable = " + e.cancelable);
ok(e.bubbles === true, "bubbles = " + e.bubbles);
ok(e.detail === 3, "detail = " + e.detail);
next_test(); next_test();
} }
@ -663,7 +696,8 @@ var tests = [
test_current_target, test_current_target,
test_dispatch_event, test_dispatch_event,
test_recursive_dispatch, test_recursive_dispatch,
test_ui_event,
test_mouse_event,
test_time_stamp, test_time_stamp,
test_listener_order, test_listener_order
test_mouse_event
]; ];