Jacek Caban : mshtml: Use inner window's event target for body element.
Module: wine Branch: master Commit: 74a759673d4aba26aa6312073c5cb3a7441143bf URL: http://source.winehq.org/git/wine.git/?a=commit;h=74a759673d4aba26aa6312073c... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 13 21:10:44 2017 +0100 mshtml: Use inner window's event target for body element. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlbody.c | 4 ++-- dlls/mshtml/htmldoc.c | 2 -- dlls/mshtml/htmlwindow.c | 4 +++- dlls/mshtml/mshtml_private.h | 1 - 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c index 729ef82..fbd04aa 100644 --- a/dlls/mshtml/htmlbody.c +++ b/dlls/mshtml/htmlbody.c @@ -829,8 +829,8 @@ static event_target_t **HTMLBodyElement_get_event_target_ptr(HTMLDOMNode *iface) { HTMLBodyElement *This = impl_from_HTMLDOMNode(iface); - return This->textcont.element.node.doc - ? &This->textcont.element.node.doc->body_event_target + return This->textcont.element.node.doc && This->textcont.element.node.doc->window + ? &This->textcont.element.node.doc->window->event_target.ptr : &This->textcont.element.node.event_target.ptr; } diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index b672c2d..5c15772 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -4644,8 +4644,6 @@ static void HTMLDocumentNode_destructor(HTMLDOMNode *iface) heap_free(This->elem_vars); detach_events(This); - if(This->body_event_target) - release_event_target(This->body_event_target); if(This->catmgr) ICatInformation_Release(This->catmgr); diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index b4ec425..b1efc0d 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -253,6 +253,8 @@ static void release_inner_window(HTMLInnerWindow *This) htmldoc_release(&This->doc->basedoc); } + if(This->event_target.ptr) + release_event_target(This->event_target.ptr); release_dispex(&This->event_target.dispex); for(i=0; i < This->global_prop_cnt; i++) @@ -2943,7 +2945,7 @@ static HRESULT HTMLWindow_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD static event_target_t **HTMLWindow_get_event_target_ptr(DispatchEx *dispex) { HTMLInnerWindow *This = impl_from_DispatchEx(dispex); - return &This->doc->body_event_target; + return &This->event_target.ptr; } static void HTMLWindow_bind_event(DispatchEx *dispex, int eid) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index f27b674..8bc0599 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -801,7 +801,6 @@ struct HTMLDocumentNode { nsIDOMHTMLDocument *nsdoc; BOOL content_ready; - event_target_t *body_event_target; IHTMLDOMImplementation *dom_implementation;
participants (1)
-
Alexandre Julliard