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