diff options
Diffstat (limited to 'Source/WebCore/editing/CompositeEditCommand.cpp')
-rw-r--r-- | Source/WebCore/editing/CompositeEditCommand.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Source/WebCore/editing/CompositeEditCommand.cpp b/Source/WebCore/editing/CompositeEditCommand.cpp index f57657137..830eacf6f 100644 --- a/Source/WebCore/editing/CompositeEditCommand.cpp +++ b/Source/WebCore/editing/CompositeEditCommand.cpp @@ -1032,8 +1032,15 @@ void CompositeEditCommand::cleanupAfterDeletion(VisiblePosition destination) // doesn't require a placeholder to prop itself open (like a bordered // div or an li), remove it during the move (the list removal code // expects this behavior). - else if (isBlock(node)) + else if (isBlock(node)) { + // If caret position after deletion and destination position coincides, + // node should not be removed. + if (!position.rendersInDifferentPosition(destination.deepEquivalent())) { + prune(node); + return; + } removeNodeAndPruneAncestors(node); + } else if (lineBreakExistsAtPosition(position)) { // There is a preserved '\n' at caretAfterDelete. // We can safely assume this is a text node. |