Index: Source/core/editing/commands/DeleteSelectionCommand.cpp |
diff --git a/Source/core/editing/commands/DeleteSelectionCommand.cpp b/Source/core/editing/commands/DeleteSelectionCommand.cpp |
index efcdfea0450aa367a7424cc19a9edfffba759d7b..b4d8dad37868b0618831f95247bbdfc24025ff18 100644 |
--- a/Source/core/editing/commands/DeleteSelectionCommand.cpp |
+++ b/Source/core/editing/commands/DeleteSelectionCommand.cpp |
@@ -50,7 +50,7 @@ using namespace HTMLNames; |
static bool isTableCellEmpty(Node* cell) |
{ |
ASSERT(isTableCell(cell)); |
- return VisiblePosition(firstPositionInNode(cell)).deepEquivalent() == VisiblePosition(lastPositionInNode(cell)).deepEquivalent(); |
+ return createVisiblePosition(firstPositionInNode(cell)).deepEquivalent() == createVisiblePosition(lastPositionInNode(cell)).deepEquivalent(); |
} |
static bool isTableRowEmpty(Node* row) |
@@ -129,7 +129,7 @@ void DeleteSelectionCommand::initializeStartEnd(Position& start, Position& end) |
if (!startSpecialContainer && !endSpecialContainer) |
break; |
- if (VisiblePosition(start).deepEquivalent() != m_selectionToDelete.visibleStart().deepEquivalent() || VisiblePosition(end).deepEquivalent() != m_selectionToDelete.visibleEnd().deepEquivalent()) |
+ if (createVisiblePosition(start).deepEquivalent() != m_selectionToDelete.visibleStart().deepEquivalent() || createVisiblePosition(end).deepEquivalent() != m_selectionToDelete.visibleEnd().deepEquivalent()) |
break; |
// If we're going to expand to include the startSpecialContainer, it must be fully selected. |
@@ -158,8 +158,8 @@ void DeleteSelectionCommand::initializeStartEnd(Position& start, Position& end) |
void DeleteSelectionCommand::setStartingSelectionOnSmartDelete(const Position& start, const Position& end) |
{ |
bool isBaseFirst = startingSelection().isBaseFirst(); |
- VisiblePosition newBase(isBaseFirst ? start : end); |
- VisiblePosition newExtent(isBaseFirst ? end : start); |
+ VisiblePosition newBase = createVisiblePosition(isBaseFirst ? start : end); |
+ VisiblePosition newExtent = createVisiblePosition(isBaseFirst ? end : start); |
setStartingSelection(VisibleSelection(newBase, newExtent, startingSelection().isDirectional())); |
} |
@@ -195,7 +195,7 @@ void DeleteSelectionCommand::initializePositionData() |
// Usually the start and the end of the selection to delete are pulled together as a result of the deletion. |
// Sometimes they aren't (like when no merge is requested), so we must choose one position to hold the caret |
// and receive the placeholder after deletion. |
- VisiblePosition visibleEnd(m_downstreamEnd); |
+ VisiblePosition visibleEnd = createVisiblePosition(m_downstreamEnd); |
if (m_mergeBlocksAfterDelete && !isEndOfParagraph(visibleEnd)) |
m_endingPosition = m_downstreamEnd; |
else |
@@ -208,7 +208,7 @@ void DeleteSelectionCommand::initializePositionData() |
// Only apply this rule if the endingSelection is a range selection. If it is a caret, then other operations have created |
// the selection we're deleting (like the process of creating a selection to delete during a backspace), and the user isn't in the situation described above. |
if (numEnclosingMailBlockquotes(start) != numEnclosingMailBlockquotes(end) |
- && isStartOfParagraph(visibleEnd) && isStartOfParagraph(VisiblePosition(start)) |
+ && isStartOfParagraph(visibleEnd) && isStartOfParagraph(createVisiblePosition(start)) |
&& endingSelection().isRange()) { |
m_mergeBlocksAfterDelete = false; |
m_pruneStartBlockIfNecessary = true; |
@@ -221,7 +221,7 @@ void DeleteSelectionCommand::initializePositionData() |
if (m_smartDelete) { |
// skip smart delete if the selection to delete already starts or ends with whitespace |
- Position pos = VisiblePosition(m_upstreamStart, m_selectionToDelete.affinity()).deepEquivalent(); |
+ Position pos = createVisiblePosition(m_upstreamStart, m_selectionToDelete.affinity()).deepEquivalent(); |
bool skipSmartDelete = trailingWhitespacePosition(pos, VP_DEFAULT_AFFINITY, ConsiderNonCollapsibleWhitespace).isNotNull(); |
if (!skipSmartDelete) |
skipSmartDelete = leadingWhitespacePosition(m_downstreamEnd, VP_DEFAULT_AFFINITY, ConsiderNonCollapsibleWhitespace).isNotNull(); |
@@ -229,7 +229,7 @@ void DeleteSelectionCommand::initializePositionData() |
// extend selection upstream if there is whitespace there |
bool hasLeadingWhitespaceBeforeAdjustment = leadingWhitespacePosition(m_upstreamStart, m_selectionToDelete.affinity(), ConsiderNonCollapsibleWhitespace).isNotNull(); |
if (!skipSmartDelete && hasLeadingWhitespaceBeforeAdjustment) { |
- VisiblePosition visiblePos = previousPositionOf(VisiblePosition(m_upstreamStart, VP_DEFAULT_AFFINITY)); |
+ VisiblePosition visiblePos = previousPositionOf(createVisiblePosition(m_upstreamStart, VP_DEFAULT_AFFINITY)); |
pos = visiblePos.deepEquivalent(); |
// Expand out one character upstream for smart delete and recalculate |
// positions based on this change. |
@@ -245,7 +245,7 @@ void DeleteSelectionCommand::initializePositionData() |
if (!skipSmartDelete && !hasLeadingWhitespaceBeforeAdjustment && trailingWhitespacePosition(m_downstreamEnd, VP_DEFAULT_AFFINITY, ConsiderNonCollapsibleWhitespace).isNotNull()) { |
// Expand out one character downstream for smart delete and recalculate |
// positions based on this change. |
- pos = nextPositionOf(VisiblePosition(m_downstreamEnd, VP_DEFAULT_AFFINITY)).deepEquivalent(); |
+ pos = nextPositionOf(createVisiblePosition(m_downstreamEnd, VP_DEFAULT_AFFINITY)).deepEquivalent(); |
m_upstreamEnd = mostBackwardCaretPosition(pos); |
m_downstreamEnd = mostForwardCaretPosition(pos); |
m_trailingWhitespace = trailingWhitespacePosition(m_downstreamEnd, VP_DEFAULT_AFFINITY); |
@@ -318,7 +318,7 @@ 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(VisiblePosition(positionBeforeNode(nodeAfterUpstreamStart))) && isEndOfBlock(VisiblePosition(positionAfterNode(nodeAfterUpstreamStart))))) { |
+ if (upstreamStartIsBR && downstreamStartIsBR && !(isStartOfBlock(createVisiblePosition(positionBeforeNode(nodeAfterUpstreamStart))) && isEndOfBlock(createVisiblePosition(positionAfterNode(nodeAfterUpstreamStart))))) { |
m_startsAtEmptyLine = true; |
m_endingPosition = m_downstreamEnd; |
} |
@@ -384,12 +384,12 @@ void DeleteSelectionCommand::removeNode(PassRefPtrWillBeRawPtr<Node> node, Shoul |
} |
if (node == m_startBlock) { |
- VisiblePosition previous = previousPositionOf(VisiblePosition(firstPositionInNode(m_startBlock.get()))); |
+ VisiblePosition previous = previousPositionOf(createVisiblePosition(firstPositionInNode(m_startBlock.get()))); |
if (previous.isNotNull() && !isEndOfBlock(previous)) |
m_needPlaceholder = true; |
} |
if (node == m_endBlock) { |
- VisiblePosition next = nextPositionOf(VisiblePosition(lastPositionInNode(m_endBlock.get()))); |
+ VisiblePosition next = nextPositionOf(createVisiblePosition(lastPositionInNode(m_endBlock.get()))); |
if (next.isNotNull() && !isStartOfBlock(next)) |
m_needPlaceholder = true; |
} |
@@ -615,8 +615,8 @@ void DeleteSelectionCommand::mergeParagraphs() |
if (m_upstreamStart == m_downstreamEnd) |
return; |
- VisiblePosition startOfParagraphToMove(m_downstreamEnd); |
- VisiblePosition mergeDestination(m_upstreamStart); |
+ VisiblePosition startOfParagraphToMove = createVisiblePosition(m_downstreamEnd); |
+ VisiblePosition mergeDestination = createVisiblePosition(m_upstreamStart); |
// m_downstreamEnd's block has been emptied out by deletion. There is no content inside of it to |
// move, so just remove it. |
@@ -629,7 +629,7 @@ void DeleteSelectionCommand::mergeParagraphs() |
// We need to merge into m_upstreamStart's block, but it's been emptied out and collapsed by deletion. |
if (!mergeDestination.deepEquivalent().anchorNode() || (!mergeDestination.deepEquivalent().anchorNode()->isDescendantOf(enclosingBlock(m_upstreamStart.computeContainerNode())) && (!mergeDestination.deepEquivalent().anchorNode()->hasChildren() || !m_upstreamStart.computeContainerNode()->hasChildren())) || (m_startsAtEmptyLine && mergeDestination.deepEquivalent() != startOfParagraphToMove.deepEquivalent())) { |
insertNodeAt(createBreakElement(document()).get(), m_upstreamStart); |
- mergeDestination = VisiblePosition(m_upstreamStart); |
+ mergeDestination = createVisiblePosition(m_upstreamStart); |
} |
if (mergeDestination.deepEquivalent() == startOfParagraphToMove.deepEquivalent()) |
@@ -816,7 +816,7 @@ void DeleteSelectionCommand::doApply() |
// set up our state |
initializePositionData(); |
- bool lineBreakBeforeStart = lineBreakExistsAtVisiblePosition(previousPositionOf(VisiblePosition(m_upstreamStart))); |
+ bool lineBreakBeforeStart = lineBreakExistsAtVisiblePosition(previousPositionOf(createVisiblePosition(m_upstreamStart))); |
// Delete any text that may hinder our ability to fixup whitespace after the |
// delete |
@@ -843,7 +843,7 @@ void DeleteSelectionCommand::doApply() |
removePreviouslySelectedEmptyTableRows(); |
if (!m_needPlaceholder && rootWillStayOpenWithoutPlaceholder) { |
- VisiblePosition visualEnding(m_endingPosition); |
+ VisiblePosition visualEnding = createVisiblePosition(m_endingPosition); |
bool hasPlaceholder = lineBreakExistsAtVisiblePosition(visualEnding) |
&& nextPositionOf(visualEnding, CannotCrossEditingBoundary).isNull(); |
m_needPlaceholder = hasPlaceholder && lineBreakBeforeStart && !lineBreakAtEndOfSelectionToDelete; |