From: Jacek Caban Subject: [PATCH 3/3] mshtml: Use bind_event in set_event_handler. Message-Id: <555CC89F.2090504@codeweavers.com> Date: Wed, 20 May 2015 19:47:11 +0200 --- dlls/mshtml/htmlevent.c | 13 +++++++------ dlls/mshtml/htmlevent.h | 4 ++-- dlls/mshtml/htmlwindow.c | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 4bc9847..ef6929c 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -1399,7 +1399,7 @@ static void remove_event_handler(EventTarget *event_target, eventid_t eid) } } -static HRESULT set_event_handler_disp(EventTarget *event_target, HTMLDocumentNode *doc, eventid_t eid, IDispatch *disp) +static HRESULT set_event_handler_disp(EventTarget *event_target, eventid_t eid, IDispatch *disp) { event_target_t *data; @@ -1417,10 +1417,11 @@ static HRESULT set_event_handler_disp(EventTarget *event_target, HTMLDocumentNod data->event_table[eid]->handler_prop = disp; IDispatch_AddRef(disp); - return ensure_doc_nsevent_handler(doc, eid); + bind_event(event_target, eid); + return S_OK; } -HRESULT set_event_handler(EventTarget *event_target, HTMLDocumentNode *doc, eventid_t eid, VARIANT *var) +HRESULT set_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var) { switch(V_VT(var)) { case VT_NULL: @@ -1428,7 +1429,7 @@ HRESULT set_event_handler(EventTarget *event_target, HTMLDocumentNode *doc, even return S_OK; case VT_DISPATCH: - return set_event_handler_disp(event_target, doc, eid, V_DISPATCH(var)); + return set_event_handler_disp(event_target, eid, V_DISPATCH(var)); case VT_BSTR: { VARIANT *v; @@ -1562,7 +1563,7 @@ void bind_target_event(HTMLDocumentNode *doc, EventTarget *event_target, const W return; } - set_event_handler_disp(event_target, doc, eid, disp); + set_event_handler_disp(event_target, eid, disp); } void update_doc_cp_events(HTMLDocumentNode *doc, cp_static_data_t *cp) @@ -1597,7 +1598,7 @@ void check_event_attr(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem) if(disp) { hres = get_node(doc, (nsIDOMNode*)nselem, TRUE, &node); if(SUCCEEDED(hres)) { - set_event_handler_disp(&node->event_target, node->doc, i, disp); + set_event_handler_disp(&node->event_target, i, disp); node_release(node); } IDispatch_Release(disp); diff --git a/dlls/mshtml/htmlevent.h b/dlls/mshtml/htmlevent.h index 3946243..4579617f 100644 --- a/dlls/mshtml/htmlevent.h +++ b/dlls/mshtml/htmlevent.h @@ -54,7 +54,7 @@ eventid_t str_to_eid(LPCWSTR) DECLSPEC_HIDDEN; void check_event_attr(HTMLDocumentNode*,nsIDOMHTMLElement*) DECLSPEC_HIDDEN; void release_event_target(event_target_t*) DECLSPEC_HIDDEN; void fire_event(HTMLDocumentNode*,eventid_t,BOOL,nsIDOMNode*,nsIDOMEvent*,IDispatch*) DECLSPEC_HIDDEN; -HRESULT set_event_handler(EventTarget*,HTMLDocumentNode*,eventid_t,VARIANT*) DECLSPEC_HIDDEN; +HRESULT set_event_handler(EventTarget*,eventid_t,VARIANT*) DECLSPEC_HIDDEN; HRESULT get_event_handler(EventTarget*,eventid_t,VARIANT*) DECLSPEC_HIDDEN; HRESULT attach_event(EventTarget*,BSTR,IDispatch*,VARIANT_BOOL*) DECLSPEC_HIDDEN; HRESULT detach_event(EventTarget*,BSTR,IDispatch*) DECLSPEC_HIDDEN; @@ -74,7 +74,7 @@ void detach_nsevent(HTMLDocumentNode*,const WCHAR*) DECLSPEC_HIDDEN; static inline HRESULT set_node_event(HTMLDOMNode *node, eventid_t eid, VARIANT *var) { - return set_event_handler(&node->event_target, node->doc, eid, var); + return set_event_handler(&node->event_target, eid, var); } static inline HRESULT get_node_event(HTMLDOMNode *node, eventid_t eid, VARIANT *var) diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index 9f9e341..618648e 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -95,7 +95,7 @@ static inline HRESULT set_window_event(HTMLWindow *window, eventid_t eid, VARIAN return E_FAIL; } - return set_event_handler(&window->inner_window->event_target, window->inner_window->doc, eid, var); + return set_event_handler(&window->inner_window->event_target, eid, var); } static inline HRESULT get_window_event(HTMLWindow *window, eventid_t eid, VARIANT *var)