Index: Source/core/editing/DeleteSelectionCommand.cpp |
diff --git a/Source/core/editing/DeleteSelectionCommand.cpp b/Source/core/editing/DeleteSelectionCommand.cpp |
index cf7b3be70ed4e148722ad027425de707d9f3dd0d..7a1ae301096cdf14318125d4d4ae1c4b3a48d651 100644 |
--- a/Source/core/editing/DeleteSelectionCommand.cpp |
+++ b/Source/core/editing/DeleteSelectionCommand.cpp |
@@ -324,7 +324,9 @@ bool DeleteSelectionCommand::handleSpecialCaseBRDelete() |
// FIXME: This code doesn't belong in here. |
// We detect the case where the start is an empty line consisting of BR not wrapped in a block element. |
- if (upstreamStartIsBR && downstreamStartIsBR && !(isStartOfBlock(positionBeforeNode(nodeAfterUpstreamStart)) && isEndOfBlock(positionAfterNode(nodeAfterUpstreamStart)))) { |
+ if (upstreamStartIsBR && downstreamStartIsBR |
+ && !(isStartOfBlock(positionBeforeNode(nodeAfterUpstreamStart)) && isEndOfBlock(positionAfterNode(nodeAfterDownstreamStart))) |
+ && (!nodeAfterUpstreamEnd || nodeAfterUpstreamEnd->hasTagName(brTag) || nodeAfterUpstreamEnd->previousSibling() != nodeAfterUpstreamStart)) { |
m_startsAtEmptyLine = true; |
m_endingPosition = m_downstreamEnd; |
} |