Jacek Caban : mshtml: Return event target as EventTarget from DispatchEx vtbl.
Alexandre Julliard
julliard at winehq.org
Tue Feb 14 16:24:51 CST 2017
Module: wine
Branch: master
Commit: c12b4b4846a06f53736c54a8dcc932599c4368cf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c12b4b4846a06f53736c54a8dcc932599c4368cf
Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
More information about the wine-cvs
mailing list