Bug 1359345 - HTMLEditor::IsVisBreak() should be renamed to HTMLEditor::IsVisibleBRElement(). r?masayuki
MozReview-Commit-ID: 2KqRauu10QE
--- a/editor/libeditor/HTMLEditRules.cpp
+++ b/editor/libeditor/HTMLEditRules.cpp
@@ -2085,17 +2085,17 @@ HTMLEditRules::WillDeleteSelection(Selec
return NS_OK;
}
if (wsType == WSType::special || wsType == WSType::br ||
visNode->IsHTMLElement(nsGkAtoms::hr)) {
// Short circuit for invisible breaks. delete them and recurse.
if (visNode->IsHTMLElement(nsGkAtoms::br) &&
- (!mHTMLEditor || !mHTMLEditor->IsVisBreak(visNode))) {
+ (!mHTMLEditor || !mHTMLEditor->IsVisibleBRElement(visNode))) {
NS_ENSURE_STATE(mHTMLEditor);
rv = mHTMLEditor->DeleteNode(visNode);
NS_ENSURE_SUCCESS(rv, rv);
return WillDeleteSelection(aSelection, aAction, aStripWrappers,
aCancel, aHandled);
}
// Special handling for backspace when positioned after <hr>
@@ -2488,17 +2488,17 @@ HTMLEditRules::WillDeleteSelection(Selec
}
nsCOMPtr<nsIContent> content = somenode->AsContent();
if (content->NodeType() == nsIDOMNode::TEXT_NODE) {
NS_ENSURE_STATE(mHTMLEditor);
mHTMLEditor->IsVisTextNode(content, &join, true);
} else {
NS_ENSURE_STATE(mHTMLEditor);
join = content->IsHTMLElement(nsGkAtoms::br) &&
- !mHTMLEditor->IsVisBreak(somenode);
+ !mHTMLEditor->IsVisibleBRElement(somenode);
}
}
}
}
// Check endpoints for possible text deletion. We can assume that if
// text node is found, we can delete to end or to begining as
// appropriate, since the case where both sel endpoints in same text
@@ -2666,17 +2666,17 @@ HTMLEditRules::GetGoodSelPointForNode(ns
return EditorDOMPoint(&aNode, isPreviousAction ? aNode.Length() : 0);
}
EditorDOMPoint ret;
ret.node = aNode.GetParentNode();
ret.offset = ret.node ? ret.node->IndexOf(&aNode) : -1;
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
if ((!aNode.IsHTMLElement(nsGkAtoms::br) ||
- mHTMLEditor->IsVisBreak(&aNode)) && isPreviousAction) {
+ mHTMLEditor->IsVisibleBRElement(&aNode)) && isPreviousAction) {
ret.offset++;
}
return ret;
}
EditActionResult
HTMLEditRules::TryToJoinBlocks(nsIContent& aLeftNode,
nsIContent& aRightNode)
@@ -5217,17 +5217,17 @@ HTMLEditRules::ExpandSelectionForDeletio
// Find next visible thingy after end of selection
if (selEndNode != selCommon && selEndNode != root) {
for (;;) {
WSRunObject wsObj(mHTMLEditor, selEndNode, selEndOffset);
wsObj.NextVisibleNode(selEndNode, selEndOffset, address_of(unused),
&visOffset, &wsType);
if (wsType == WSType::br) {
- if (mHTMLEditor->IsVisBreak(wsObj.mEndReasonNode)) {
+ if (mHTMLEditor->IsVisibleBRElement(wsObj.mEndReasonNode)) {
break;
}
if (!firstBRParent) {
firstBRParent = selEndNode;
firstBROffset = selEndOffset;
}
selEndNode = wsObj.mEndReasonNode->GetParentNode();
selEndOffset = selEndNode
@@ -5512,17 +5512,17 @@ HTMLEditRules::GetPromotedPoint(RulesEnd
}
// look back through any further inline nodes that aren't across a <br>
// from us, and that are enclosed in the same block.
nsCOMPtr<nsINode> priorNode =
htmlEditor->GetPriorHTMLNode(node, offset, true);
while (priorNode && priorNode->GetParentNode() &&
- !htmlEditor->IsVisBreak(priorNode) &&
+ !htmlEditor->IsVisibleBRElement(priorNode) &&
!IsBlockNode(*priorNode)) {
offset = priorNode->GetParentNode()->IndexOf(priorNode);
node = priorNode->GetParentNode();
priorNode = htmlEditor->GetPriorHTMLNode(node, offset, true);
}
// finding the real start for this point. look up the tree for as long as
// we are the first node in the container, and as long as we haven't hit
@@ -5579,17 +5579,17 @@ HTMLEditRules::GetPromotedPoint(RulesEnd
// look ahead through any further inline nodes that aren't across a <br> from
// us, and that are enclosed in the same block.
nsCOMPtr<nsIContent> nextNode =
htmlEditor->GetNextHTMLNode(node, offset, true);
while (nextNode && !IsBlockNode(*nextNode) && nextNode->GetParentNode()) {
offset = 1 + nextNode->GetParentNode()->IndexOf(nextNode);
node = nextNode->GetParentNode();
- if (htmlEditor->IsVisBreak(nextNode)) {
+ if (htmlEditor->IsVisibleBRElement(nextNode)) {
break;
}
// Check for newlines in pre-formatted text nodes.
bool isPRE;
htmlEditor->IsPreformatted(nextNode->AsDOMNode(), &isPRE);
if (isPRE) {
if (EditorBase::IsTextNode(nextNode)) {
@@ -6471,27 +6471,29 @@ HTMLEditRules::ReturnInParagraph(Selecti
// we are at the edges of the block, newBRneeded not needed!
sibling = node->AsContent();
} else if (EditorBase::IsTextNode(aNode)) {
// at beginning of text node?
if (!aOffset) {
// is there a BR prior to it?
NS_ENSURE_STATE(mHTMLEditor);
sibling = mHTMLEditor->GetPriorHTMLSibling(node);
- if (!sibling || !mHTMLEditor || !mHTMLEditor->IsVisBreak(sibling) ||
+ if (!sibling || !mHTMLEditor ||
+ !mHTMLEditor->IsVisibleBRElement(sibling) ||
TextEditUtils::HasMozAttr(GetAsDOMNode(sibling))) {
NS_ENSURE_STATE(mHTMLEditor);
newBRneeded = true;
}
} else if (aOffset == static_cast<int32_t>(node->Length())) {
// we're at the end of text node...
// is there a BR after to it?
NS_ENSURE_STATE(mHTMLEditor);
sibling = mHTMLEditor->GetNextHTMLSibling(node);
- if (!sibling || !mHTMLEditor || !mHTMLEditor->IsVisBreak(sibling) ||
+ if (!sibling || !mHTMLEditor ||
+ !mHTMLEditor->IsVisibleBRElement(sibling) ||
TextEditUtils::HasMozAttr(GetAsDOMNode(sibling))) {
NS_ENSURE_STATE(mHTMLEditor);
newBRneeded = true;
offset++;
}
} else {
if (doesCRCreateNewP) {
nsCOMPtr<nsIDOMNode> tmp;
@@ -6509,23 +6511,23 @@ HTMLEditRules::ReturnInParagraph(Selecti
}
} else {
// not in a text node.
// is there a BR prior to it?
nsCOMPtr<nsIContent> nearNode;
NS_ENSURE_STATE(mHTMLEditor);
nearNode = mHTMLEditor->GetPriorHTMLNode(node, aOffset);
NS_ENSURE_STATE(mHTMLEditor);
- if (!nearNode || !mHTMLEditor->IsVisBreak(nearNode) ||
+ if (!nearNode || !mHTMLEditor->IsVisibleBRElement(nearNode) ||
TextEditUtils::HasMozAttr(GetAsDOMNode(nearNode))) {
// is there a BR after it?
NS_ENSURE_STATE(mHTMLEditor);
nearNode = mHTMLEditor->GetNextHTMLNode(node, aOffset);
NS_ENSURE_STATE(mHTMLEditor);
- if (!nearNode || !mHTMLEditor->IsVisBreak(nearNode) ||
+ if (!nearNode || !mHTMLEditor->IsVisibleBRElement(nearNode) ||
TextEditUtils::HasMozAttr(GetAsDOMNode(nearNode))) {
newBRneeded = true;
parent = node;
offset = aOffset;
newSelNode = true;
}
}
if (!newBRneeded) {
@@ -6583,17 +6585,17 @@ HTMLEditRules::SplitParagraph(nsIDOMNode
HTMLEditor::EmptyContainers::yes,
getter_AddRefs(leftPara),
getter_AddRefs(rightPara));
if (NS_WARN_IF(offset == -1)) {
return NS_ERROR_FAILURE;
}
// get rid of the break, if it is visible (otherwise it may be needed to prevent an empty p)
NS_ENSURE_STATE(mHTMLEditor);
- if (mHTMLEditor->IsVisBreak(aBRNode)) {
+ if (mHTMLEditor->IsVisibleBRElement(aBRNode)) {
NS_ENSURE_STATE(mHTMLEditor);
rv = mHTMLEditor->DeleteNode(aBRNode);
NS_ENSURE_SUCCESS(rv, rv);
}
// remove ID attribute on the paragraph we just created
RefPtr<Element> rightElt = rightPara->AsElement();
NS_ENSURE_STATE(mHTMLEditor);
@@ -7578,17 +7580,17 @@ HTMLEditRules::AdjustSelection(Selection
if (nearNode) {
// is nearNode also a descendant of same block?
NS_ENSURE_STATE(mHTMLEditor);
nsCOMPtr<Element> block = mHTMLEditor->GetBlock(*selNode);
nsCOMPtr<Element> nearBlock = mHTMLEditor->GetBlockNodeParent(nearNode);
if (block && block == nearBlock) {
if (nearNode && TextEditUtils::IsBreak(nearNode)) {
NS_ENSURE_STATE(mHTMLEditor);
- if (!mHTMLEditor->IsVisBreak(nearNode)) {
+ if (!mHTMLEditor->IsVisibleBRElement(nearNode)) {
// need to insert special moz BR. Why? Because if we don't
// the user will see no new line for the break. Also, things
// like table cells won't grow in height.
nsCOMPtr<nsIDOMNode> brNode;
rv = CreateMozBR(GetAsDOMNode(selNode), selOffset,
getter_AddRefs(brNode));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIDOMNode> brParent =
--- a/editor/libeditor/HTMLEditor.cpp
+++ b/editor/libeditor/HTMLEditor.cpp
@@ -923,17 +923,17 @@ HTMLEditor::IsPrevCharInNodeWhitespace(n
if (outNode && outOffset) {
NS_IF_ADDREF(*outNode = aContent);
*outOffset = aOffset - 1;
}
}
}
bool
-HTMLEditor::IsVisBreak(nsINode* aNode)
+HTMLEditor::IsVisibleBRElement(nsINode* aNode)
{
MOZ_ASSERT(aNode);
if (!TextEditUtils::IsBreak(aNode)) {
return false;
}
// Check if there is a later node in block after br
nsCOMPtr<nsINode> nextNode = GetNextHTMLNode(aNode, true);
if (nextNode && TextEditUtils::IsBreak(nextNode)) {
--- a/editor/libeditor/HTMLEditor.h
+++ b/editor/libeditor/HTMLEditor.h
@@ -669,17 +669,17 @@ protected:
StartOrEnd aStartOrEnd,
nsTArray<OwningNonNull<nsINode>>& aNodeArray,
nsTArray<OwningNonNull<Element>>& aListAndTableArray,
int32_t aHighWaterMark);
/**
* Small utility routine to test if a break node is visible to user.
*/
- bool IsVisBreak(nsINode* aNode);
+ bool IsVisibleBRElement(nsINode* aNode);
/**
* Utility routine to possibly adjust the insertion position when
* inserting a block level element.
*/
void NormalizeEOLInsertPosition(nsINode* firstNodeToInsert,
nsCOMPtr<nsIDOMNode>* insertParentNode,
int32_t* insertOffset);
--- a/editor/libeditor/HTMLEditorDataTransfer.cpp
+++ b/editor/libeditor/HTMLEditorDataTransfer.cpp
@@ -366,17 +366,17 @@ HTMLEditor::DoInsertHTMLWithContext(cons
&offsetOfNewNode);
// if there are any invisible br's after our insertion point, remove them.
// this is because if there is a br at end of what we paste, it will make
// the invisible br visible.
WSRunObject wsObj(this, parentNode, offsetOfNewNode);
if (wsObj.mEndReasonNode &&
TextEditUtils::IsBreak(wsObj.mEndReasonNode) &&
- !IsVisBreak(wsObj.mEndReasonNode)) {
+ !IsVisibleBRElement(wsObj.mEndReasonNode)) {
rv = DeleteNode(wsObj.mEndReasonNode);
NS_ENSURE_SUCCESS(rv, rv);
}
// Remember if we are in a link.
bool bStartedInLink = IsInLink(parentNode);
// Are we in a text node? If so, split it.
@@ -617,17 +617,17 @@ HTMLEditor::DoInsertHTMLWithContext(cons
nsCOMPtr<nsINode> selNode_(do_QueryInterface(selNode));
wsRunObj.PriorVisibleNode(selNode_, selOffset, address_of(visNode),
&outVisOffset, &visType);
if (visType == WSType::br) {
// we are after a break. Is it visible? Despite the name,
// PriorVisibleNode does not make that determination for breaks.
// It also may not return the break in visNode. We have to pull it
// out of the WSRunObject's state.
- if (!IsVisBreak(wsRunObj.mStartReasonNode)) {
+ if (!IsVisibleBRElement(wsRunObj.mStartReasonNode)) {
// don't leave selection past an invisible break;
// reset {selNode,selOffset} to point before break
selNode = GetNodeLocation(GetAsDOMNode(wsRunObj.mStartReasonNode), &selOffset);
// we want to be inside any inline style prior to break
WSRunObject wsRunObj(this, selNode, selOffset);
selNode_ = do_QueryInterface(selNode);
wsRunObj.PriorVisibleNode(selNode_, selOffset, address_of(visNode),
&outVisOffset, &visType);