From 98ab9642f9a161172fc0e525a5991cb7521f8786 Mon Sep 17 00:00:00 2001 From: "ducarroz%netscape.com" Date: Mon, 18 Sep 2000 22:16:10 +0000 Subject: [PATCH] Fix for bug 52819. Use nsEditor::GetRootElement for retreiving the body node. sr=mscott --- mailnews/compose/public/nsIMsgCompose.idl | 4 +-- .../resources/content/MsgComposeCommands.js | 3 +- mailnews/compose/src/nsMsgCompose.cpp | 29 +++++++++++++++++-- mailnews/compose/src/nsMsgCompose.h | 1 + 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/mailnews/compose/public/nsIMsgCompose.idl b/mailnews/compose/public/nsIMsgCompose.idl index 7a38009205d9..f7765a9f772d 100644 --- a/mailnews/compose/public/nsIMsgCompose.idl +++ b/mailnews/compose/public/nsIMsgCompose.idl @@ -164,9 +164,9 @@ interface nsIMsgCompose : nsISupports { wstring GetNoHtmlNewsgroups(in wstring newsgroups); /* bodyConvertible: The level of "convertibility" to plaintext - * @return a value from nsIMsgCompConvertible + * @return a value from nsIMsgCompConvertible. */ - long bodyConvertible(in nsIDOMNode node); + long bodyConvertible(); /* SetSignature: will replace the curr. */ diff --git a/mailnews/compose/resources/content/MsgComposeCommands.js b/mailnews/compose/resources/content/MsgComposeCommands.js index cfc51a084c37..6318ba4f0668 100644 --- a/mailnews/compose/resources/content/MsgComposeCommands.js +++ b/mailnews/compose/resources/content/MsgComposeCommands.js @@ -1522,8 +1522,7 @@ function DetermineConvertibility() return msgCompConvertible.Plain; try { - return msgCompose.bodyConvertible( - window.editorShell.contentWindow.document.childNodes[1]); + return msgCompose.bodyConvertible(); } catch(ex) {} return msgCompConvertible.No; } diff --git a/mailnews/compose/src/nsMsgCompose.cpp b/mailnews/compose/src/nsMsgCompose.cpp index f1c1a50ada19..7c065c0e1b80 100644 --- a/mailnews/compose/src/nsMsgCompose.cpp +++ b/mailnews/compose/src/nsMsgCompose.cpp @@ -2906,13 +2906,13 @@ nsresult nsMsgCompose::TagConvertible(nsIDOMNode *node, PRInt32 *_retval) return rv; } -nsresult nsMsgCompose::BodyConvertible(nsIDOMNode *node, PRInt32 *_retval) +nsresult nsMsgCompose::_BodyConvertible(nsIDOMNode *node, PRInt32 *_retval) { NS_ENSURE_TRUE(node && _retval, NS_ERROR_NULL_POINTER); nsresult rv; PRInt32 result; - + // Check this node rv = TagConvertible(node, &result); if (NS_FAILED(rv)) @@ -2935,7 +2935,7 @@ nsresult nsMsgCompose::BodyConvertible(nsIDOMNode *node, PRInt32 *_retval) && pItem) { PRInt32 curresult; - rv = BodyConvertible(pItem, &curresult); + rv = _BodyConvertible(pItem, &curresult); if (NS_SUCCEEDED(rv) && curresult > result) result = curresult; } @@ -2947,6 +2947,29 @@ nsresult nsMsgCompose::BodyConvertible(nsIDOMNode *node, PRInt32 *_retval) return rv; } +nsresult nsMsgCompose::BodyConvertible(PRInt32 *_retval) +{ + NS_ENSURE_TRUE(_retval, NS_ERROR_NULL_POINTER); + + nsresult rv; + + nsCOMPtr editor; + rv = m_editor->GetEditor(getter_AddRefs(editor)); + if (NS_FAILED(rv) || nsnull == editor) + return rv; + + nsCOMPtr rootElement; + rv = editor->GetRootElement(getter_AddRefs(rootElement)); + if (NS_FAILED(rv) || nsnull == rootElement) + return rv; + + nsCOMPtr node = do_QueryInterface(rootElement); + if (nsnull == node) + return NS_ERROR_FAILURE; + + return _BodyConvertible(node, _retval); +} + nsresult nsMsgCompose::SetSignature(nsIMsgIdentity *identity) { nsresult rv; diff --git a/mailnews/compose/src/nsMsgCompose.h b/mailnews/compose/src/nsMsgCompose.h index 583b1d87d545..9817ff96799e 100644 --- a/mailnews/compose/src/nsMsgCompose.h +++ b/mailnews/compose/src/nsMsgCompose.h @@ -96,6 +96,7 @@ class nsMsgCompose : public nsIMsgCompose nsresult BuildMailListArray(nsIAddrDatabase* database, nsIAbDirectory* parentDir, nsISupportsArray* array); nsresult GetMailListAddresses(nsString& name, nsISupportsArray* mailListArray, nsISupportsArray** addresses); nsresult TagConvertible(nsIDOMNode *node, PRInt32 *_retval); + nsresult _BodyConvertible(nsIDOMNode *node, PRInt32 *_retval); // Helper function. Parameters are not checked. PRBool mConvertStructs; // for TagConvertible