Index: Source/core/editing/EditingUtilities.cpp |
diff --git a/Source/core/editing/EditingUtilities.cpp b/Source/core/editing/EditingUtilities.cpp |
index 73f9ca3fdc32d5dd501e113b5560bdb8628df84b..232ce8bc2c4e876172c582fb99c60eafa32a625c 100644 |
--- a/Source/core/editing/EditingUtilities.cpp |
+++ b/Source/core/editing/EditingUtilities.cpp |
@@ -366,12 +366,12 @@ Position nextVisuallyDistinctCandidate(const Position& position) |
return Position(); |
PositionIterator p(position); |
- Position downstreamStart = position.downstream(); |
+ Position downstreamStart = mostForwardCaretPosition(position); |
p.increment(); |
while (!p.atEnd()) { |
Position candidate = p.computePosition(); |
- if (isVisuallyEquivalentCandidate(candidate) && candidate.downstream() != downstreamStart) |
+ if (isVisuallyEquivalentCandidate(candidate) && mostForwardCaretPosition(candidate) != downstreamStart) |
return candidate; |
p.increment(); |
@@ -417,12 +417,12 @@ PositionAlgorithm<Strategy> previousVisuallyDistinctCandidateAlgorithm(const Pos |
return PositionAlgorithm<Strategy>(); |
PositionIteratorAlgorithm<Strategy> p(position); |
- PositionAlgorithm<Strategy> downstreamStart = position.downstream(); |
+ PositionAlgorithm<Strategy> downstreamStart = mostForwardCaretPosition(position); |
p.decrement(); |
while (!p.atStart()) { |
PositionAlgorithm<Strategy> candidate = p.computePosition(); |
- if (isVisuallyEquivalentCandidate(candidate) && candidate.downstream() != downstreamStart) |
+ if (isVisuallyEquivalentCandidate(candidate) && mostForwardCaretPosition(candidate) != downstreamStart) |
return candidate; |
p.decrement(); |
@@ -704,7 +704,7 @@ Position positionAfterContainingSpecialElement(const Position& pos, HTMLElement* |
Element* isFirstPositionAfterTable(const VisiblePosition& visiblePosition) |
{ |
- Position upstream(visiblePosition.deepEquivalent().upstream()); |
+ Position upstream(mostBackwardCaretPosition(visiblePosition.deepEquivalent())); |
if (isRenderedTableElement(upstream.anchorNode()) && upstream.atLastEditingPositionForNode()) |
return toElement(upstream.anchorNode()); |
@@ -713,7 +713,7 @@ Element* isFirstPositionAfterTable(const VisiblePosition& visiblePosition) |
Element* isLastPositionBeforeTable(const VisiblePosition& visiblePosition) |
{ |
- Position downstream(visiblePosition.deepEquivalent().downstream()); |
+ Position downstream(mostForwardCaretPosition(visiblePosition.deepEquivalent())); |
if (isRenderedTableElement(downstream.anchorNode()) && downstream.atFirstEditingPositionForNode()) |
return toElement(downstream.anchorNode()); |
@@ -980,7 +980,7 @@ HTMLElement* outermostEnclosingList(Node* node, HTMLElement* rootList) |
// while ignoring whitespaces and unrendered nodes |
static bool isVisiblyAdjacent(const Position& first, const Position& second) |
{ |
- return VisiblePosition(first).deepEquivalent() == VisiblePosition(second.upstream()).deepEquivalent(); |
+ return VisiblePosition(first).deepEquivalent() == VisiblePosition(mostBackwardCaretPosition(second)).deepEquivalent(); |
} |
bool canMergeLists(Element* firstList, Element* secondList) |
@@ -1181,7 +1181,7 @@ Position leadingWhitespacePosition(const Position& position, TextAffinity affini |
if (position.isNull()) |
return Position(); |
- if (isHTMLBRElement(*position.upstream().anchorNode())) |
+ if (isHTMLBRElement(*mostBackwardCaretPosition(position).anchorNode())) |
return Position(); |
Position prev = previousCharacterPosition(position, affinity); |
@@ -1275,7 +1275,7 @@ int caretMaxOffset(const Node* n) |
bool lineBreakExistsAtVisiblePosition(const VisiblePosition& visiblePosition) |
{ |
- return lineBreakExistsAtPosition(visiblePosition.deepEquivalent().downstream()); |
+ return lineBreakExistsAtPosition(mostForwardCaretPosition(visiblePosition.deepEquivalent())); |
} |
bool lineBreakExistsAtPosition(const Position& position) |
@@ -1447,11 +1447,11 @@ Position adjustedSelectionStartForStyleComputation(const VisibleSelection& selec |
// if the selection starts just before a paragraph break, skip over it |
if (isEndOfParagraph(visiblePosition)) |
- return visiblePosition.next().deepEquivalent().downstream(); |
+ return mostForwardCaretPosition(visiblePosition.next().deepEquivalent()); |
// otherwise, make sure to be at the start of the first selected node, |
// instead of possibly at the end of the last node before the selection |
- return visiblePosition.deepEquivalent().downstream(); |
+ return mostForwardCaretPosition(visiblePosition.deepEquivalent()); |
} |
} // namespace blink |