Jacek Caban : mshtml: Use stored nsdoc in createTextRange.
Alexandre Julliard
julliard at winehq.org
Thu Oct 9 07:42:46 CDT 2008
Module: wine
Branch: master
Commit: 408024a2d16311bb6f12961362b1ce30e69b0180
URL: http://source.winehq.org/git/wine.git/?a=commit;h=408024a2d16311bb6f12961362b1ce30e69b0180
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Oct 8 13:28:27 2008 -0500
mshtml: Use stored nsdoc in createTextRange.
---
dlls/mshtml/htmlbody.c | 42 +++++++++++++++++++++++-------------------
1 files changed, 23 insertions(+), 19 deletions(-)
diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c
index efe5df8..623d83d 100644
--- a/dlls/mshtml/htmlbody.c
+++ b/dlls/mshtml/htmlbody.c
@@ -544,31 +544,35 @@ static HRESULT WINAPI HTMLBodyElement_get_onbeforeunload(IHTMLBodyElement *iface
static HRESULT WINAPI HTMLBodyElement_createTextRange(IHTMLBodyElement *iface, IHTMLTxtRange **range)
{
HTMLBodyElement *This = HTMLBODY_THIS(iface);
+ nsIDOMDocumentRange *nsdocrange;
nsIDOMRange *nsrange = NULL;
+ nsresult nsres;
TRACE("(%p)->(%p)\n", This, range);
- if(This->textcont.element.node.doc->nscontainer) {
- nsIDOMDocument *nsdoc;
- nsIDOMDocumentRange *nsdocrange;
- nsresult nsres;
-
- nsIWebNavigation_GetDocument(This->textcont.element.node.doc->nscontainer->navigation, &nsdoc);
- nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMDocumentRange, (void**)&nsdocrange);
- nsIDOMDocument_Release(nsdoc);
-
- nsres = nsIDOMDocumentRange_CreateRange(nsdocrange, &nsrange);
- if(NS_SUCCEEDED(nsres)) {
- nsres = nsIDOMRange_SelectNodeContents(nsrange, This->textcont.element.node.nsnode);
- if(NS_FAILED(nsres))
- ERR("SelectNodeContents failed: %08x\n", nsres);
- }else {
- ERR("CreateRange failed: %08x\n", nsres);
- }
-
- nsIDOMDocumentRange_Release(nsdocrange);
+ if(!This->textcont.element.node.doc->nsdoc) {
+ WARN("No nsdoc\n");
+ return E_UNEXPECTED;
+ }
+
+ nsres = nsIDOMDocument_QueryInterface(This->textcont.element.node.doc->nsdoc, &IID_nsIDOMDocumentRange,
+ (void**)&nsdocrange);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMDocumentRabge iface: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ nsres = nsIDOMDocumentRange_CreateRange(nsdocrange, &nsrange);
+ if(NS_SUCCEEDED(nsres)) {
+ nsres = nsIDOMRange_SelectNodeContents(nsrange, This->textcont.element.node.nsnode);
+ if(NS_FAILED(nsres))
+ ERR("SelectNodeContents failed: %08x\n", nsres);
+ }else {
+ ERR("CreateRange failed: %08x\n", nsres);
}
+ nsIDOMDocumentRange_Release(nsdocrange);
+
*range = HTMLTxtRange_Create(This->textcont.element.node.doc, nsrange);
return S_OK;
}
More information about the wine-cvs
mailing list