Module: wine Branch: master Commit: 625ed3d0aa631de0b70fef0a96ba4586b7f86df6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=625ed3d0aa631de0b70fef0a96...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Apr 17 22:52:49 2008 +0200
mshtml: Added possibility to get node object from nsIDOMNode only if available.
---
dlls/mshtml/htmldoc.c | 4 ++-- dlls/mshtml/htmldoc3.c | 2 +- dlls/mshtml/htmlelem.c | 4 ++-- dlls/mshtml/htmlnode.c | 4 ++-- dlls/mshtml/htmloption.c | 2 +- dlls/mshtml/mshtml_private.h | 2 +- dlls/mshtml/nsembed.c | 2 +- dlls/mshtml/txtrange.c | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 92a7f9a..005c629 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -289,7 +289,7 @@ static HRESULT WINAPI HTMLDocument_get_all(IHTMLDocument2 *iface, IHTMLElementCo return S_OK; }
- *p = create_all_collection(get_node(This, (nsIDOMNode*)nselem)); + *p = create_all_collection(get_node(This, (nsIDOMNode*)nselem, TRUE));
nsIDOMElement_Release(nselem); return S_OK; @@ -331,7 +331,7 @@ static HRESULT WINAPI HTMLDocument_get_body(IHTMLDocument2 *iface, IHTMLElement return S_OK; }
- node = get_node(This, (nsIDOMNode*)nsbody); + node = get_node(This, (nsIDOMNode*)nsbody, TRUE); nsIDOMHTMLElement_Release(nsbody);
IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)p); diff --git a/dlls/mshtml/htmldoc3.c b/dlls/mshtml/htmldoc3.c index 4388000..3b109e9 100644 --- a/dlls/mshtml/htmldoc3.c +++ b/dlls/mshtml/htmldoc3.c @@ -137,7 +137,7 @@ static HRESULT WINAPI HTMLDocument3_get_documentElement(IHTMLDocument3 *iface, I ERR("GetDocumentElement failed: %08x\n", nsres); } if(nselem) { - node = get_node(This, (nsIDOMNode *)nselem); + node = get_node(This, (nsIDOMNode *)nselem, TRUE); nsIDOMDocument_Release(nsdoc);
IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)p); diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index b7fac23..6dab3a1 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -1067,7 +1067,7 @@ static void create_child_list(HTMLDocument *doc, HTMLElement *elem, elem_vector
nsres = nsIDOMNode_GetNodeType(iter, &node_type); if(NS_SUCCEEDED(nsres) && node_type == ELEMENT_NODE) - elem_vector_add(buf, HTMLELEM_NODE_THIS(get_node(doc, iter))); + elem_vector_add(buf, HTMLELEM_NODE_THIS(get_node(doc, iter, TRUE))); } }
@@ -1111,7 +1111,7 @@ static void create_all_list(HTMLDocument *doc, HTMLDOMNode *elem, elem_vector *b
nsres = nsIDOMNode_GetNodeType(iter, &node_type); if(NS_SUCCEEDED(nsres) && node_type == ELEMENT_NODE) { - HTMLDOMNode *node = get_node(doc, iter); + HTMLDOMNode *node = get_node(doc, iter, TRUE);
elem_vector_add(buf, HTMLELEM_NODE_THIS(node)); create_all_list(doc, node, buf); diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index e098a83..a5df575 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -370,7 +370,7 @@ static HTMLDOMNode *create_node(HTMLDocument *doc, nsIDOMNode *nsnode) * (better) find a way to store HTMLDOMelement pointer in nsIDOMNode. */
-HTMLDOMNode *get_node(HTMLDocument *This, nsIDOMNode *nsnode) +HTMLDOMNode *get_node(HTMLDocument *This, nsIDOMNode *nsnode, BOOL create) { HTMLDOMNode *iter = This->nodes, *ret;
@@ -380,7 +380,7 @@ HTMLDOMNode *get_node(HTMLDocument *This, nsIDOMNode *nsnode) iter = iter->next; }
- if(iter) + if(iter || !create) return iter;
ret = create_node(This, nsnode); diff --git a/dlls/mshtml/htmloption.c b/dlls/mshtml/htmloption.c index 73af3b0..20a35ae 100644 --- a/dlls/mshtml/htmloption.c +++ b/dlls/mshtml/htmloption.c @@ -469,7 +469,7 @@ static HRESULT WINAPI HTMLOptionElementFactory_create(IHTMLOptionElementFactory return E_FAIL; }
- hres = IHTMLDOMNode_QueryInterface(HTMLDOMNODE(get_node(This->doc, (nsIDOMNode*)nselem)), + hres = IHTMLDOMNode_QueryInterface(HTMLDOMNODE(get_node(This->doc, (nsIDOMNode*)nselem, TRUE)), &IID_IHTMLOptionElement, (void**)optelem); nsIDOMElement_Release(nselem);
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 67e27a4..f7e1e1e 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -464,7 +464,7 @@ void HTMLDOMNode_destructor(HTMLDOMNode*); HRESULT HTMLElement_QI(HTMLDOMNode*,REFIID,void**); void HTMLElement_destructor(HTMLDOMNode*);
-HTMLDOMNode *get_node(HTMLDocument*,nsIDOMNode*); +HTMLDOMNode *get_node(HTMLDocument*,nsIDOMNode*,BOOL); void release_nodes(HTMLDocument*);
void release_script_hosts(HTMLDocument*); diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index e46b8fa..c172e0d 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -1073,7 +1073,7 @@ static nsresult NSAPI nsContextMenuListener_OnShowContextMenu(nsIContextMenuList FIXME("aContextFlags=%08x\n", aContextFlags); };
- show_context_menu(This->doc, dwID, &pt, (IDispatch*)HTMLDOMNODE(get_node(This->doc, aNode))); + show_context_menu(This->doc, dwID, &pt, (IDispatch*)HTMLDOMNODE(get_node(This->doc, aNode, TRUE)));
return NS_OK; } diff --git a/dlls/mshtml/txtrange.c b/dlls/mshtml/txtrange.c index 72b9ce0..2fbc0bf 100644 --- a/dlls/mshtml/txtrange.c +++ b/dlls/mshtml/txtrange.c @@ -1183,7 +1183,7 @@ static HRESULT WINAPI HTMLTxtRange_parentElement(IHTMLTxtRange *iface, IHTMLElem return S_OK; }
- node = get_node(This->doc, nsnode); + node = get_node(This->doc, nsnode, TRUE); nsIDOMNode_Release(nsnode);
return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)parent);