mshtml: Always create event object in fire_event.
This commit is contained in:
parent
50ab5620e8
commit
a6ee270f0f
|
@ -499,18 +499,15 @@ void fire_event(HTMLDocument *doc, eventid_t eid, nsIDOMNode *target)
|
||||||
}
|
}
|
||||||
|
|
||||||
prev_event = doc->window->event;
|
prev_event = doc->window->event;
|
||||||
|
event_obj = doc->window->event = create_event(get_node(doc, target, TRUE));
|
||||||
nsnode = target;
|
nsnode = target;
|
||||||
nsIDOMNode_AddRef(nsnode);
|
nsIDOMNode_AddRef(nsnode);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
node = get_node(doc, nsnode, FALSE);
|
node = get_node(doc, nsnode, FALSE);
|
||||||
|
|
||||||
if(node) {
|
if(node)
|
||||||
if(!event_obj)
|
|
||||||
event_obj = doc->window->event = create_event(get_node(doc, target, TRUE));
|
|
||||||
|
|
||||||
call_event_handlers(doc, node->event_target, eid, (IDispatch*)HTMLDOMNODE(node));
|
call_event_handlers(doc, node->event_target, eid, (IDispatch*)HTMLDOMNODE(node));
|
||||||
}
|
|
||||||
|
|
||||||
if(!(event_info[eid].flags & EVENT_BUBBLE))
|
if(!(event_info[eid].flags & EVENT_BUBBLE))
|
||||||
break;
|
break;
|
||||||
|
@ -529,17 +526,11 @@ void fire_event(HTMLDocument *doc, eventid_t eid, nsIDOMNode *target)
|
||||||
if(nsnode)
|
if(nsnode)
|
||||||
nsIDOMNode_Release(nsnode);
|
nsIDOMNode_Release(nsnode);
|
||||||
|
|
||||||
if(event_info[eid].flags & EVENT_BUBBLE) {
|
if(event_info[eid].flags & EVENT_BUBBLE)
|
||||||
if(!event_obj)
|
|
||||||
event_obj = doc->window->event = create_event(get_node(doc, target, TRUE));
|
|
||||||
|
|
||||||
call_event_handlers(doc, doc->event_target, eid, (IDispatch*)HTMLDOC(doc));
|
call_event_handlers(doc, doc->event_target, eid, (IDispatch*)HTMLDOC(doc));
|
||||||
}
|
|
||||||
|
|
||||||
if(event_obj) {
|
IHTMLEventObj_Release(event_obj);
|
||||||
IHTMLEventObj_Release(event_obj);
|
doc->window->event = prev_event;
|
||||||
doc->window->event = prev_event;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT set_event_handler_disp(event_target_t **event_target, HTMLDocument *doc, eventid_t eid, IDispatch *disp)
|
static HRESULT set_event_handler_disp(event_target_t **event_target, HTMLDocument *doc, eventid_t eid, IDispatch *disp)
|
||||||
|
|
Loading…
Reference in New Issue