Index: Source/core/editing/ReplaceSelectionCommand.cpp |
diff --git a/Source/core/editing/ReplaceSelectionCommand.cpp b/Source/core/editing/ReplaceSelectionCommand.cpp |
index 048d09a56de039b391f2d7cec59be60c5366ab6a..a73f851f668c755a4558be2f787dfc4006cff978 100644 |
--- a/Source/core/editing/ReplaceSelectionCommand.cpp |
+++ b/Source/core/editing/ReplaceSelectionCommand.cpp |
@@ -384,7 +384,7 @@ static bool hasMatchingQuoteLevel(VisiblePosition endOfExistingContent, VisibleP |
{ |
Position existing = endOfExistingContent.deepEquivalent(); |
Position inserted = endOfInsertedContent.deepEquivalent(); |
- bool isInsideMailBlockquote = enclosingNodeOfType(inserted, isMailBlockquote, CanCrossEditingBoundary); |
+ bool isInsideMailBlockquote = enclosingNodeOfType(inserted, isMailHTMLBlockquoteElement, CanCrossEditingBoundary); |
return isInsideMailBlockquote && (numEnclosingMailBlockquotes(existing) == numEnclosingMailBlockquotes(inserted)); |
} |
@@ -462,14 +462,14 @@ bool ReplaceSelectionCommand::shouldMerge(const VisiblePosition& source, const V |
Node* destinationNode = destination.deepEquivalent().deprecatedNode(); |
Element* sourceBlock = enclosingBlock(sourceNode); |
Element* destinationBlock = enclosingBlock(destinationNode); |
- return !enclosingNodeOfType(source.deepEquivalent(), &isMailPasteAsQuotationNode) && |
- sourceBlock && (!sourceBlock->hasTagName(blockquoteTag) || isMailBlockquote(sourceBlock)) && |
- enclosingListChild(sourceBlock) == enclosingListChild(destinationNode) && |
- enclosingTableCell(source.deepEquivalent()) == enclosingTableCell(destination.deepEquivalent()) && |
- (!isHeaderElement(sourceBlock) || haveSameTagName(sourceBlock, destinationBlock)) && |
- // Don't merge to or from a position before or after a block because it would |
- // be a no-op and cause infinite recursion. |
- !isBlock(sourceNode) && !isBlock(destinationNode); |
+ return !enclosingNodeOfType(source.deepEquivalent(), &isMailPasteAsQuotationNode) |
+ && sourceBlock && (!sourceBlock->hasTagName(blockquoteTag) || isMailHTMLBlockquoteElement(sourceBlock)) |
+ && enclosingListChild(sourceBlock) == enclosingListChild(destinationNode) |
+ && enclosingTableCell(source.deepEquivalent()) == enclosingTableCell(destination.deepEquivalent()) |
+ && (!isHeaderElement(sourceBlock) || haveSameTagName(sourceBlock, destinationBlock)) |
+ // Don't merge to or from a position before or after a block because it would |
+ // be a no-op and cause infinite recursion. |
+ && !isBlock(sourceNode) && !isBlock(destinationNode); |
} |
// Style rules that match just inserted elements could change their appearance, like |
@@ -513,7 +513,7 @@ void ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline(Insert |
// If Mail wraps the fragment with a Paste as Quotation blockquote, or if you're pasting into a quoted region, |
// styles from blockquoteNode are allowed to override those from the source document, see <rdar://problem/4930986> and <rdar://problem/5089327>. |
- Node* blockquoteNode = !context || isMailPasteAsQuotationNode(context) ? context : enclosingNodeOfType(firstPositionInNode(context), isMailBlockquote, CanCrossEditingBoundary); |
+ Node* blockquoteNode = !context || isMailPasteAsQuotationNode(context) ? context : enclosingNodeOfType(firstPositionInNode(context), isMailHTMLBlockquoteElement, CanCrossEditingBoundary); |
if (blockquoteNode) |
newInlineStyle->removeStyleFromRulesAndContext(element, document().documentElement()); |
@@ -734,7 +734,7 @@ static bool handleStyleSpansBeforeInsertion(ReplacementFragment& fragment, const |
// Handling the case where we are doing Paste as Quotation or pasting into quoted content is more complicated (see handleStyleSpans) |
// and doesn't receive the optimization. |
- if (isMailPasteAsQuotationNode(topNode) || enclosingNodeOfType(firstPositionInOrBeforeNode(topNode), isMailBlockquote, CanCrossEditingBoundary)) |
+ if (isMailPasteAsQuotationNode(topNode) || enclosingNodeOfType(firstPositionInOrBeforeNode(topNode), isMailHTMLBlockquoteElement, CanCrossEditingBoundary)) |
return false; |
// Either there are no style spans in the fragment or a WebKit client has added content to the fragment |
@@ -786,7 +786,7 @@ void ReplaceSelectionCommand::handleStyleSpans(InsertedNodes& insertedNodes) |
// If Mail wraps the fragment with a Paste as Quotation blockquote, or if you're pasting into a quoted region, |
// styles from blockquoteNode are allowed to override those from the source document, see <rdar://problem/4930986> and <rdar://problem/5089327>. |
- Node* blockquoteNode = isMailPasteAsQuotationNode(context) ? context : enclosingNodeOfType(firstPositionInNode(context), isMailBlockquote, CanCrossEditingBoundary); |
+ Node* blockquoteNode = isMailPasteAsQuotationNode(context) ? context : enclosingNodeOfType(firstPositionInNode(context), isMailHTMLBlockquoteElement, CanCrossEditingBoundary); |
if (blockquoteNode) |
context = document().documentElement(); |
@@ -936,7 +936,7 @@ void ReplaceSelectionCommand::doApply() |
Node* enclosingBlockOfVisibleStart = enclosingBlock(visibleStart.deepEquivalent().deprecatedNode()); |
Position insertionPos = selection.start(); |
- bool startIsInsideMailBlockquote = enclosingNodeOfType(insertionPos, isMailBlockquote, CanCrossEditingBoundary); |
+ bool startIsInsideMailBlockquote = enclosingNodeOfType(insertionPos, isMailHTMLBlockquoteElement, CanCrossEditingBoundary); |
bool selectionIsPlainText = !selection.isContentRichlyEditable(); |
Element* currentRoot = selection.rootEditableElement(); |
@@ -1222,7 +1222,7 @@ void ReplaceSelectionCommand::doApply() |
// Use a default paragraph element (a plain div) for the empty paragraph, using the last paragraph |
// block's style seems to annoy users. |
insertParagraphSeparator(true, !startIsInsideMailBlockquote && highestEnclosingNodeOfType(endOfInsertedContent.deepEquivalent(), |
- isMailBlockquote, CannotCrossEditingBoundary, insertedNodes.firstNodeInserted()->parentNode())); |
+ isMailHTMLBlockquoteElement, CannotCrossEditingBoundary, insertedNodes.firstNodeInserted()->parentNode())); |
} |
// Select up to the paragraph separator that was added. |