mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-30 06:21:47 +00:00
mshtml: Use host object script bindings for MSEventObj class.
This commit is contained in:
parent
4a4582d2e0
commit
f08a2be026
|
@ -2863,7 +2863,7 @@ static HRESULT WINAPI HTMLDocument4_createEventObject(IHTMLDocument4 *iface,
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
return create_event_obj(NULL, dispex_compat_mode(&This->node.event_target.dispex), ppEventObj);
|
||||
return create_event_obj(NULL, This, ppEventObj);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDocument4_fireEvent(IHTMLDocument4 *iface, BSTR bstrEventName,
|
||||
|
|
|
@ -1815,7 +1815,7 @@ static dispex_static_data_t HTMLEventObj_dispex = {
|
|||
HTMLEventObj_iface_tids
|
||||
};
|
||||
|
||||
static HTMLEventObj *alloc_event_obj(DOMEvent *event, compat_mode_t compat_mode)
|
||||
static HTMLEventObj *alloc_event_obj(DOMEvent *event, HTMLInnerWindow *script_global)
|
||||
{
|
||||
HTMLEventObj *event_obj;
|
||||
|
||||
|
@ -1830,18 +1830,21 @@ static HTMLEventObj *alloc_event_obj(DOMEvent *event, compat_mode_t compat_mode)
|
|||
event_obj->IHTMLEventObj5_iface.lpVtbl = &HTMLEventObj5Vtbl;
|
||||
event_obj->IHTMLEventObj6_iface.lpVtbl = &HTMLEventObj6Vtbl;
|
||||
event_obj->event = event;
|
||||
if(event)
|
||||
if(event) {
|
||||
IDOMEvent_AddRef(&event->IDOMEvent_iface);
|
||||
|
||||
init_dispatch(&event_obj->dispex, &HTMLEventObj_dispex, NULL, compat_mode);
|
||||
init_dispatch_with_owner(&event_obj->dispex, &HTMLEventObj_dispex, &event->dispex);
|
||||
}else {
|
||||
init_dispatch(&event_obj->dispex, &HTMLEventObj_dispex, script_global,
|
||||
dispex_compat_mode(&script_global->event_target.dispex));
|
||||
}
|
||||
return event_obj;
|
||||
}
|
||||
|
||||
HRESULT create_event_obj(DOMEvent *event, compat_mode_t compat_mode, IHTMLEventObj **ret)
|
||||
HRESULT create_event_obj(DOMEvent *event, HTMLDocumentNode *doc, IHTMLEventObj **ret)
|
||||
{
|
||||
HTMLEventObj *event_obj;
|
||||
|
||||
event_obj = alloc_event_obj(event, compat_mode);
|
||||
event_obj = alloc_event_obj(event, doc->script_global);
|
||||
if(!event_obj)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
|
@ -4424,7 +4427,7 @@ static HRESULT dispatch_event_object(EventTarget *event_target, DOMEvent *event,
|
|||
} while(iter);
|
||||
|
||||
if(!event->event_obj && !event->no_event_obj) {
|
||||
event_obj_ref = alloc_event_obj(event, dispex_compat_mode(&event->dispex));
|
||||
event_obj_ref = alloc_event_obj(event, NULL);
|
||||
if(event_obj_ref)
|
||||
event->event_obj = &event_obj_ref->IHTMLEventObj_iface;
|
||||
}
|
||||
|
@ -4556,7 +4559,7 @@ HRESULT fire_event(HTMLDOMNode *node, const WCHAR *event_name, VARIANT *event_va
|
|||
}
|
||||
|
||||
if(!event_obj) {
|
||||
event_obj = alloc_event_obj(NULL, dispex_compat_mode(&node->event_target.dispex));
|
||||
event_obj = alloc_event_obj(NULL, node->doc->script_global);
|
||||
if(!event_obj)
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ HRESULT fire_event(HTMLDOMNode*,const WCHAR*,VARIANT*,VARIANT_BOOL*);
|
|||
void update_doc_cp_events(HTMLDocumentNode*,cp_static_data_t*);
|
||||
HRESULT doc_init_events(HTMLDocumentNode*);
|
||||
void detach_events(HTMLDocumentNode *doc);
|
||||
HRESULT create_event_obj(DOMEvent*,compat_mode_t,IHTMLEventObj**);
|
||||
HRESULT create_event_obj(DOMEvent*,HTMLDocumentNode*,IHTMLEventObj**);
|
||||
void bind_target_event(HTMLDocumentNode*,EventTarget*,const WCHAR*,IDispatch*);
|
||||
HRESULT ensure_doc_nsevent_handler(HTMLDocumentNode*,nsIDOMNode*,eventid_t);
|
||||
|
||||
|
|
|
@ -216,7 +216,7 @@ static void storage_event_proc(event_task_t *_task)
|
|||
if(event->event_id == EVENTID_STORAGE && (compat_mode = dispex_compat_mode(&window->event_target.dispex)) >= COMPAT_MODE_IE9) {
|
||||
dispatch_event(&window->event_target, event);
|
||||
if(window->doc) {
|
||||
hres = create_event_obj(event, compat_mode, (IHTMLEventObj**)&V_DISPATCH(&var));
|
||||
hres = create_event_obj(event, window->doc, (IHTMLEventObj**)&V_DISPATCH(&var));
|
||||
if(SUCCEEDED(hres)) {
|
||||
V_VT(&var) = VT_DISPATCH;
|
||||
fire_event(&window->doc->node, L"onstorage", &var, &cancelled);
|
||||
|
|
|
@ -323,7 +323,7 @@ sync_test("builtin_toString", function() {
|
|||
test("namespaces", document.namespaces, "MSNamespaceInfoCollection");
|
||||
}
|
||||
if(v < 11) {
|
||||
test("eventObject", document.createEventObject(), "MSEventObj", null, true);
|
||||
test("eventObject", document.createEventObject(), "MSEventObj");
|
||||
test("selection", document.selection, "MSSelection");
|
||||
}
|
||||
if(v >= 9) {
|
||||
|
|
Loading…
Reference in a new issue