diff options
Diffstat (limited to 'WebCore/editing/DeleteSelectionCommand.cpp')
-rw-r--r-- | WebCore/editing/DeleteSelectionCommand.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/WebCore/editing/DeleteSelectionCommand.cpp b/WebCore/editing/DeleteSelectionCommand.cpp index fbb5aea..9e4ba29 100644 --- a/WebCore/editing/DeleteSelectionCommand.cpp +++ b/WebCore/editing/DeleteSelectionCommand.cpp @@ -595,6 +595,14 @@ void DeleteSelectionCommand::mergeParagraphs() return; } + // Block images, tables and horizontal rules cannot be made inline with content at mergeDestination. If there is + // any (!isStartOfParagraph(mergeDestination)), don't merge, just move the caret to just before the selection we deleted. + // See https://bugs.webkit.org/show_bug.cgi?id=25439 + if (isRenderedAsNonInlineTableImageOrHR(startOfParagraphToMove.deepEquivalent().node()) && !isStartOfParagraph(mergeDestination)) { + m_endingPosition = m_upstreamStart; + return; + } + RefPtr<Range> range = Range::create(document(), rangeCompliantEquivalent(startOfParagraphToMove.deepEquivalent()), rangeCompliantEquivalent(endOfParagraphToMove.deepEquivalent())); RefPtr<Range> rangeToBeReplaced = Range::create(document(), rangeCompliantEquivalent(mergeDestination.deepEquivalent()), rangeCompliantEquivalent(mergeDestination.deepEquivalent())); if (!document()->frame()->editor()->client()->shouldMoveRangeAfterDelete(range.get(), rangeToBeReplaced.get())) |