Module: wine Branch: master Commit: c12b4b4846a06f53736c54a8dcc932599c4368cf URL: http://source.winehq.org/git/wine.git/?a=commit;h=c12b4b4846a06f53736c54a8dc...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Feb 13 21:10:58 2017 +0100
mshtml: Return event target as EventTarget from DispatchEx vtbl.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/htmlelem.c | 8 ++++---- dlls/mshtml/htmlevent.c | 12 +++++------- dlls/mshtml/htmlwindow.c | 6 +++--- dlls/mshtml/mshtml_private.h | 2 +- 4 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 3a6197d..3d156d8 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -5074,12 +5074,12 @@ static HRESULT HTMLElement_populate_props(DispatchEx *dispex) return S_OK; }
-static event_target_t **HTMLElement_get_event_target_ptr(DispatchEx *dispex) +static EventTarget *HTMLElement_get_event_target(DispatchEx *dispex) { HTMLElement *This = impl_from_DispatchEx(dispex); return This->node.vtbl->get_event_target - ? &This->node.vtbl->get_event_target(&This->node)->ptr - : &This->node.event_target.ptr; + ? This->node.vtbl->get_event_target(&This->node) + : &This->node.event_target; }
static void HTMLElement_bind_event(DispatchEx *dispex, int eid) @@ -5113,7 +5113,7 @@ static dispex_static_data_vtbl_t HTMLElement_dispex_vtbl = { HTMLElement_get_dispid, HTMLElement_invoke, HTMLElement_populate_props, - HTMLElement_get_event_target_ptr, + HTMLElement_get_event_target, HTMLElement_bind_event };
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index fc5277b..4a28bb8 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -902,15 +902,13 @@ HRESULT create_event_obj(IHTMLEventObj **ret) static inline event_target_t *get_event_target_data(EventTarget *event_target, BOOL alloc) { const dispex_static_data_vtbl_t *vtbl = dispex_get_vtbl(&event_target->dispex); - event_target_t **ptr;
- ptr = vtbl && vtbl->get_event_target_ptr - ? vtbl->get_event_target_ptr(&event_target->dispex) - : &event_target->ptr; - if(*ptr || !alloc) - return *ptr; + if(vtbl && vtbl->get_event_target) + event_target = vtbl->get_event_target(&event_target->dispex); + if(event_target->ptr || !alloc) + return event_target->ptr;
- return *ptr = heap_alloc_zero(sizeof(event_target_t)); + return event_target->ptr = heap_alloc_zero(sizeof(event_target_t)); }
static HRESULT call_disp_func(IDispatch *disp, DISPPARAMS *dp, VARIANT *retv) diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index b1efc0d..aa64fb4 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -2942,10 +2942,10 @@ static HRESULT HTMLWindow_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD return hres; }
-static event_target_t **HTMLWindow_get_event_target_ptr(DispatchEx *dispex) +static EventTarget *HTMLWindow_get_event_target(DispatchEx *dispex) { HTMLInnerWindow *This = impl_from_DispatchEx(dispex); - return &This->event_target.ptr; + return &This->event_target; }
static void HTMLWindow_bind_event(DispatchEx *dispex, int eid) @@ -2964,7 +2964,7 @@ static const dispex_static_data_vtbl_t HTMLWindow_dispex_vtbl = { NULL, HTMLWindow_invoke, NULL, - HTMLWindow_get_event_target_ptr, + HTMLWindow_get_event_target, HTMLWindow_bind_event };
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 68362f7..457e32b 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -259,7 +259,7 @@ typedef struct { HRESULT (*invoke)(DispatchEx*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,IServiceProvider*); HRESULT (*populate_props)(DispatchEx*); /* We abuse this vtbl for EventTarget functions to avoid separated vtbl. */ - event_target_t **(*get_event_target_ptr)(DispatchEx*); + EventTarget *(*get_event_target)(DispatchEx*); void (*bind_event)(DispatchEx*,int); } dispex_static_data_vtbl_t;