Commit ec5d0d44 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Call default event handles through event target vtbl.

parent 62c7dd05
......@@ -5048,6 +5048,7 @@ static const event_target_vtbl_t HTMLDocumentNode_event_target_vtbl = {
NULL
},
HTMLDocumentNode_bind_event,
NULL,
HTMLDocumentNode_get_cp_container
};
......
......@@ -5347,6 +5347,15 @@ static void HTMLElement_bind_event(DispatchEx *dispex, eventid_t eid)
}
}
static HRESULT HTMLElement_handle_event_default(DispatchEx *dispex, eventid_t eid, nsIDOMEvent *nsevent, BOOL *prevent_default)
{
HTMLElement *This = impl_from_DispatchEx(dispex);
if(!This->node.vtbl->handle_event)
return S_OK;
return This->node.vtbl->handle_event(&This->node, eid, nsevent, prevent_default);
}
static ConnectionPointContainer *HTMLElement_get_cp_container(DispatchEx *dispex)
{
HTMLElement *This = impl_from_DispatchEx(dispex);
......@@ -5385,6 +5394,7 @@ static event_target_vtbl_t HTMLElement_event_target_vtbl = {
HTMLElement_populate_props
},
HTMLElement_bind_event,
HTMLElement_handle_event_default,
HTMLElement_get_cp_container
};
......
......@@ -1137,8 +1137,9 @@ static void fire_event_obj(HTMLDocumentNode *doc, eventid_t eid, HTMLEventObj *e
break;
if(node) {
if(node->vtbl->handle_event)
hres = node->vtbl->handle_event(node, eid, event_obj ? event_obj->nsevent : NULL, &prevent_default);
const event_target_vtbl_t *vtbl = dispex_get_vtbl(&node->event_target.dispex);
if(vtbl && vtbl->handle_event_default)
hres = vtbl->handle_event_default(&node->event_target.dispex, eid, event_obj ? event_obj->nsevent : NULL, &prevent_default);
node_release(node);
if(FAILED(hres) || prevent_default || (event_obj && event_obj->cancel_bubble))
break;
......
......@@ -83,6 +83,7 @@ void detach_nsevent(HTMLDocumentNode*,const WCHAR*) DECLSPEC_HIDDEN;
typedef struct {
dispex_static_data_vtbl_t dispex_vtbl;
void (*bind_event)(DispatchEx*,eventid_t);
HRESULT (*handle_event_default)(DispatchEx*,eventid_t,nsIDOMEvent*,BOOL*);
ConnectionPointContainer *(*get_cp_container)(DispatchEx*);
} event_target_vtbl_t;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment