Commit 015cfd9e authored by Gabriel Ivăncescu's avatar Gabriel Ivăncescu Committed by Alexandre Julliard

mshtml: Traverse and unlink FrameElements using the dispex.

parent 35aeccf3
...@@ -981,17 +981,24 @@ static HRESULT HTMLFrameElement_bind_to_tree(HTMLDOMNode *iface) ...@@ -981,17 +981,24 @@ static HRESULT HTMLFrameElement_bind_to_tree(HTMLDOMNode *iface)
return hres; return hres;
} }
static void HTMLFrameElement_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb) static inline HTMLFrameElement *frame_from_DispatchEx(DispatchEx *iface)
{ {
HTMLFrameElement *This = frame_from_HTMLDOMNode(iface); return CONTAINING_RECORD(iface, HTMLFrameElement, framebase.element.node.event_target.dispex);
}
static void HTMLFrameElement_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb)
{
HTMLFrameElement *This = frame_from_DispatchEx(dispex);
HTMLDOMNode_traverse(dispex, cb);
if(This->framebase.nsframe) if(This->framebase.nsframe)
note_cc_edge((nsISupports*)This->framebase.nsframe, "This->nsframe", cb); note_cc_edge((nsISupports*)This->framebase.nsframe, "nsframe", cb);
} }
static void HTMLFrameElement_unlink(HTMLDOMNode *iface) static void HTMLFrameElement_unlink(DispatchEx *dispex)
{ {
HTMLFrameElement *This = frame_from_HTMLDOMNode(iface); HTMLFrameElement *This = frame_from_DispatchEx(dispex);
HTMLDOMNode_unlink(dispex);
unlink_ref(&This->framebase.nsframe); unlink_ref(&This->framebase.nsframe);
} }
...@@ -1009,8 +1016,15 @@ static const NodeImplVtbl HTMLFrameElementImplVtbl = { ...@@ -1009,8 +1016,15 @@ static const NodeImplVtbl HTMLFrameElementImplVtbl = {
.get_name = HTMLFrameElement_get_name, .get_name = HTMLFrameElement_get_name,
.invoke = HTMLFrameElement_invoke, .invoke = HTMLFrameElement_invoke,
.bind_to_tree = HTMLFrameElement_bind_to_tree, .bind_to_tree = HTMLFrameElement_bind_to_tree,
};
static const event_target_vtbl_t HTMLFrameElement_event_target_vtbl = {
{
HTMLELEMENT_DISPEX_VTBL_ENTRIES,
.traverse = HTMLFrameElement_traverse, .traverse = HTMLFrameElement_traverse,
.unlink = HTMLFrameElement_unlink .unlink = HTMLFrameElement_unlink
},
HTMLELEMENT_EVENT_TARGET_VTBL_ENTRIES,
}; };
static const tid_t HTMLFrameElement_iface_tids[] = { static const tid_t HTMLFrameElement_iface_tids[] = {
...@@ -1023,7 +1037,7 @@ static const tid_t HTMLFrameElement_iface_tids[] = { ...@@ -1023,7 +1037,7 @@ static const tid_t HTMLFrameElement_iface_tids[] = {
static dispex_static_data_t HTMLFrameElement_dispex = { static dispex_static_data_t HTMLFrameElement_dispex = {
"HTMLFrameElement", "HTMLFrameElement",
&HTMLElement_event_target_vtbl.dispex_vtbl, &HTMLFrameElement_event_target_vtbl.dispex_vtbl,
DispHTMLFrameElement_tid, DispHTMLFrameElement_tid,
HTMLFrameElement_iface_tids, HTMLFrameElement_iface_tids,
HTMLElement_init_dispex_info HTMLElement_init_dispex_info
......
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