Fix for Normal->ViewSource->Normal dataloss bugs

73659 (TextArea tag) and 55224 (Map tag). Added
IsTextarea() and IsMap() methods, factored out
common code for Is*() methods into NodeIsType().
r=jfrancis@netscpae.com sr=sfraser@netscape.com


git-svn-id: svn://10.0.0.236/trunk@90892 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
kin%netscape.com
2001-03-30 14:39:29 +00:00
parent 45beae1008
commit 114013d2ea
6 changed files with 116 additions and 292 deletions

View File

@@ -28,6 +28,21 @@
#include "nsIDOMNodeList.h"
#include "nsIDOMHTMLAnchorElement.h"
PRBool
nsHTMLEditUtils::NodeIsType(nsIDOMNode *aNode, const nsAReadableString& aTag)
{
NS_PRECONDITION(aNode, "null node passed to nsHTMLEditUtils::NodeIsType");
if (aNode)
{
nsAutoString tag;
nsEditor::GetTagString(aNode,tag);
tag.ToLowerCase();
if (tag.Equals(aTag))
return PR_TRUE;
}
return PR_FALSE;
}
/********************************************************
* helper methods from nsTextEditRules
********************************************************/
@@ -38,18 +53,7 @@
PRBool
nsHTMLEditUtils::IsBody(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsBody");
if (node)
{
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("body"))
{
return PR_TRUE;
}
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("body"));
}
@@ -60,15 +64,7 @@ nsHTMLEditUtils::IsBody(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsBreak(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsBreak");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("br"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("br"));
}
@@ -78,15 +74,7 @@ nsHTMLEditUtils::IsBreak(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsBig(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsBig");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("big"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("big"));
}
@@ -96,15 +84,7 @@ nsHTMLEditUtils::IsBig(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsSmall(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsSmall");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("small"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("small"));
}
@@ -202,15 +182,7 @@ nsHTMLEditUtils::IsHeader(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsParagraph(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsParagraph");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("p"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("p"));
}
@@ -260,13 +232,7 @@ nsHTMLEditUtils::IsTableElement(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsTable(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditor::IsTable");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
if (tag.EqualsWithConversion("table"))
return PR_TRUE;
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("table"));
}
///////////////////////////////////////////////////////////////////////////
@@ -275,15 +241,7 @@ nsHTMLEditUtils::IsTable(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsTableRow(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsTableRow");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("tr"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("tr"));
}
@@ -351,15 +309,7 @@ nsHTMLEditUtils::IsList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsOrderedList(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsOrderedList");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("ol"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("ol"));
}
@@ -369,15 +319,7 @@ nsHTMLEditUtils::IsOrderedList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsUnorderedList(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsUnorderedList");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("ul"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("ul"));
}
@@ -387,15 +329,7 @@ nsHTMLEditUtils::IsUnorderedList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsDefinitionList(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsDefinitionList");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("dl"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("dl"));
}
@@ -405,15 +339,7 @@ nsHTMLEditUtils::IsDefinitionList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsBlockquote(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsBlockquote");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("blockquote"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("blockquote"));
}
@@ -423,15 +349,7 @@ nsHTMLEditUtils::IsBlockquote(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsPre(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsPre");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("pre"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("pre"));
}
@@ -441,15 +359,7 @@ nsHTMLEditUtils::IsPre(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsAddress(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsAddress");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("address"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("address"));
}
@@ -459,15 +369,7 @@ nsHTMLEditUtils::IsAddress(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsAnchor(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsAnchor");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("a"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("a"));
}
@@ -477,15 +379,7 @@ nsHTMLEditUtils::IsAnchor(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsImage(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsImage");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("img"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("img"));
}
PRBool
@@ -523,15 +417,7 @@ nsHTMLEditUtils::IsNamedAnchor(nsIDOMNode *aNode)
PRBool
nsHTMLEditUtils::IsDiv(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsDiv");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("div"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("div"));
}
@@ -582,6 +468,26 @@ nsHTMLEditUtils::IsMailCite(nsIDOMNode *node)
}
///////////////////////////////////////////////////////////////////////////
// IsTextarea: true if node is an html textarea node
//
PRBool
nsHTMLEditUtils::IsTextarea(nsIDOMNode *node)
{
return NodeIsType(node, NS_LITERAL_STRING("textarea"));
}
///////////////////////////////////////////////////////////////////////////
// IsMap: true if node is an html map node
//
PRBool
nsHTMLEditUtils::IsMap(nsIDOMNode *node)
{
return NodeIsType(node, NS_LITERAL_STRING("map"));
}
PRBool
nsHTMLEditUtils::IsDescendantOf(nsIDOMNode *aNode, nsIDOMNode *aParent)
{

View File

@@ -25,12 +25,15 @@
#include "prtypes.h" // for PRBool
#include "nsError.h" // for nsresult
#include "nsString.h" // for nsAReadableString
class nsIEditor;
class nsIDOMNode;
class nsHTMLEditUtils
{
public:
static PRBool NodeIsType(nsIDOMNode *aNode, const nsAReadableString& aTag);
// from nsTextEditRules:
static PRBool IsBody(nsIDOMNode *aNode);
static PRBool IsBreak(nsIDOMNode *aNode);
@@ -64,6 +67,8 @@ public:
static PRBool IsNormalDiv(nsIDOMNode *aNode);
static PRBool IsMozDiv(nsIDOMNode *aNode);
static PRBool IsMailCite(nsIDOMNode *aNode);
static PRBool IsTextarea(nsIDOMNode *aNode);
static PRBool IsMap(nsIDOMNode *aNode);
static PRBool IsDescendantOf(nsIDOMNode *aNode, nsIDOMNode *aParent);
static PRBool IsLeafNode(nsIDOMNode *aNode);

View File

@@ -3800,7 +3800,8 @@ nsHTMLEditor::IsEmptyNode( nsIDOMNode *aNode,
// anchors are containers, named anchors are "empty" but we don't
// want to treat them as such. Also, don't call ListItems or table
// cells empty if caller desires.
if (!IsContainer(aNode) || nsHTMLEditUtils::IsAnchor(aNode) ||
if (!IsContainer(aNode) || nsHTMLEditUtils::IsAnchor(aNode) ||
nsHTMLEditUtils::IsTextarea(aNode) || nsHTMLEditUtils::IsMap(aNode) ||
(aListOrCellNotEmpty && nsHTMLEditUtils::IsListItem(aNode)) ||
(aListOrCellNotEmpty && nsHTMLEditUtils::IsTableCell(aNode)) )
{

View File

@@ -28,6 +28,21 @@
#include "nsIDOMNodeList.h"
#include "nsIDOMHTMLAnchorElement.h"
PRBool
nsHTMLEditUtils::NodeIsType(nsIDOMNode *aNode, const nsAReadableString& aTag)
{
NS_PRECONDITION(aNode, "null node passed to nsHTMLEditUtils::NodeIsType");
if (aNode)
{
nsAutoString tag;
nsEditor::GetTagString(aNode,tag);
tag.ToLowerCase();
if (tag.Equals(aTag))
return PR_TRUE;
}
return PR_FALSE;
}
/********************************************************
* helper methods from nsTextEditRules
********************************************************/
@@ -38,18 +53,7 @@
PRBool
nsHTMLEditUtils::IsBody(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsBody");
if (node)
{
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("body"))
{
return PR_TRUE;
}
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("body"));
}
@@ -60,15 +64,7 @@ nsHTMLEditUtils::IsBody(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsBreak(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsBreak");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("br"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("br"));
}
@@ -78,15 +74,7 @@ nsHTMLEditUtils::IsBreak(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsBig(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsBig");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("big"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("big"));
}
@@ -96,15 +84,7 @@ nsHTMLEditUtils::IsBig(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsSmall(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsSmall");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("small"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("small"));
}
@@ -202,15 +182,7 @@ nsHTMLEditUtils::IsHeader(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsParagraph(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsParagraph");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("p"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("p"));
}
@@ -260,13 +232,7 @@ nsHTMLEditUtils::IsTableElement(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsTable(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditor::IsTable");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
if (tag.EqualsWithConversion("table"))
return PR_TRUE;
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("table"));
}
///////////////////////////////////////////////////////////////////////////
@@ -275,15 +241,7 @@ nsHTMLEditUtils::IsTable(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsTableRow(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsTableRow");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("tr"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("tr"));
}
@@ -351,15 +309,7 @@ nsHTMLEditUtils::IsList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsOrderedList(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsOrderedList");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("ol"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("ol"));
}
@@ -369,15 +319,7 @@ nsHTMLEditUtils::IsOrderedList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsUnorderedList(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsUnorderedList");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("ul"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("ul"));
}
@@ -387,15 +329,7 @@ nsHTMLEditUtils::IsUnorderedList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsDefinitionList(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsDefinitionList");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("dl"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("dl"));
}
@@ -405,15 +339,7 @@ nsHTMLEditUtils::IsDefinitionList(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsBlockquote(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsBlockquote");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("blockquote"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("blockquote"));
}
@@ -423,15 +349,7 @@ nsHTMLEditUtils::IsBlockquote(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsPre(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsPre");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("pre"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("pre"));
}
@@ -441,15 +359,7 @@ nsHTMLEditUtils::IsPre(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsAddress(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsAddress");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("address"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("address"));
}
@@ -459,15 +369,7 @@ nsHTMLEditUtils::IsAddress(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsAnchor(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsAnchor");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("a"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("a"));
}
@@ -477,15 +379,7 @@ nsHTMLEditUtils::IsAnchor(nsIDOMNode *node)
PRBool
nsHTMLEditUtils::IsImage(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsImage");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("img"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("img"));
}
PRBool
@@ -523,15 +417,7 @@ nsHTMLEditUtils::IsNamedAnchor(nsIDOMNode *aNode)
PRBool
nsHTMLEditUtils::IsDiv(nsIDOMNode *node)
{
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsDiv");
nsAutoString tag;
nsEditor::GetTagString(node,tag);
tag.ToLowerCase();
if (tag.EqualsWithConversion("div"))
{
return PR_TRUE;
}
return PR_FALSE;
return NodeIsType(node, NS_LITERAL_STRING("div"));
}
@@ -582,6 +468,26 @@ nsHTMLEditUtils::IsMailCite(nsIDOMNode *node)
}
///////////////////////////////////////////////////////////////////////////
// IsTextarea: true if node is an html textarea node
//
PRBool
nsHTMLEditUtils::IsTextarea(nsIDOMNode *node)
{
return NodeIsType(node, NS_LITERAL_STRING("textarea"));
}
///////////////////////////////////////////////////////////////////////////
// IsMap: true if node is an html map node
//
PRBool
nsHTMLEditUtils::IsMap(nsIDOMNode *node)
{
return NodeIsType(node, NS_LITERAL_STRING("map"));
}
PRBool
nsHTMLEditUtils::IsDescendantOf(nsIDOMNode *aNode, nsIDOMNode *aParent)
{

View File

@@ -25,12 +25,15 @@
#include "prtypes.h" // for PRBool
#include "nsError.h" // for nsresult
#include "nsString.h" // for nsAReadableString
class nsIEditor;
class nsIDOMNode;
class nsHTMLEditUtils
{
public:
static PRBool NodeIsType(nsIDOMNode *aNode, const nsAReadableString& aTag);
// from nsTextEditRules:
static PRBool IsBody(nsIDOMNode *aNode);
static PRBool IsBreak(nsIDOMNode *aNode);
@@ -64,6 +67,8 @@ public:
static PRBool IsNormalDiv(nsIDOMNode *aNode);
static PRBool IsMozDiv(nsIDOMNode *aNode);
static PRBool IsMailCite(nsIDOMNode *aNode);
static PRBool IsTextarea(nsIDOMNode *aNode);
static PRBool IsMap(nsIDOMNode *aNode);
static PRBool IsDescendantOf(nsIDOMNode *aNode, nsIDOMNode *aParent);
static PRBool IsLeafNode(nsIDOMNode *aNode);

View File

@@ -3800,7 +3800,8 @@ nsHTMLEditor::IsEmptyNode( nsIDOMNode *aNode,
// anchors are containers, named anchors are "empty" but we don't
// want to treat them as such. Also, don't call ListItems or table
// cells empty if caller desires.
if (!IsContainer(aNode) || nsHTMLEditUtils::IsAnchor(aNode) ||
if (!IsContainer(aNode) || nsHTMLEditUtils::IsAnchor(aNode) ||
nsHTMLEditUtils::IsTextarea(aNode) || nsHTMLEditUtils::IsMap(aNode) ||
(aListOrCellNotEmpty && nsHTMLEditUtils::IsListItem(aNode)) ||
(aListOrCellNotEmpty && nsHTMLEditUtils::IsTableCell(aNode)) )
{