Index: Source/core/editing/VisiblePosition.cpp |
diff --git a/Source/core/editing/VisiblePosition.cpp b/Source/core/editing/VisiblePosition.cpp |
index 355ee9ce898c279d6ddd017e4b5a137a01f03eaf..ac504cf8c72116edf85ff6ae074548e2d485c52d 100644 |
--- a/Source/core/editing/VisiblePosition.cpp |
+++ b/Source/core/editing/VisiblePosition.cpp |
@@ -120,7 +120,7 @@ Position VisiblePosition::leftVisuallyDistinctCandidate() const |
if (p.isNull()) |
return Position(); |
- Position downstreamStart = p.downstream(); |
+ Position downstreamStart = mostForwardCaretPosition(p); |
TextDirection primaryDirection = primaryDirectionOf(*p.anchorNode()); |
while (true) { |
@@ -253,7 +253,7 @@ Position VisiblePosition::leftVisuallyDistinctCandidate() const |
p = Position::editingPositionOf(layoutObject->node(), offset); |
- if ((isVisuallyEquivalentCandidate(p) && p.downstream() != downstreamStart) || p.atStartOfTree() || p.atEndOfTree()) |
+ if ((isVisuallyEquivalentCandidate(p) && mostForwardCaretPosition(p) != downstreamStart) || p.atStartOfTree() || p.atEndOfTree()) |
return p; |
ASSERT(p != m_deepPosition); |
@@ -279,7 +279,7 @@ Position VisiblePosition::rightVisuallyDistinctCandidate() const |
if (p.isNull()) |
return Position(); |
- Position downstreamStart = p.downstream(); |
+ Position downstreamStart = mostForwardCaretPosition(p); |
TextDirection primaryDirection = primaryDirectionOf(*p.anchorNode()); |
while (true) { |
@@ -415,7 +415,7 @@ Position VisiblePosition::rightVisuallyDistinctCandidate() const |
p = Position::editingPositionOf(layoutObject->node(), offset); |
- if ((isVisuallyEquivalentCandidate(p) && p.downstream() != downstreamStart) || p.atStartOfTree() || p.atEndOfTree()) |
+ if ((isVisuallyEquivalentCandidate(p) && mostForwardCaretPosition(p) != downstreamStart) || p.atStartOfTree() || p.atEndOfTree()) |
return p; |
ASSERT(p != m_deepPosition); |
@@ -549,7 +549,7 @@ static PositionType canonicalizeCandidate(const PositionType& candidate) |
if (candidate.isNull()) |
return PositionType(); |
ASSERT(isVisuallyEquivalentCandidate(candidate)); |
- PositionType upstream = candidate.upstream(); |
+ PositionType upstream = mostBackwardCaretPosition(candidate); |
if (isVisuallyEquivalentCandidate(upstream)) |
return upstream; |
return candidate; |
@@ -581,10 +581,10 @@ static PositionType canonicalPosition(const PositionType& passedPosition) |
Node* node = position.computeContainerNode(); |
- PositionType candidate = position.upstream(); |
+ PositionType candidate = mostBackwardCaretPosition(position); |
if (isVisuallyEquivalentCandidate(candidate)) |
return candidate; |
- candidate = position.downstream(); |
+ candidate = mostForwardCaretPosition(position); |
if (isVisuallyEquivalentCandidate(candidate)) |
return candidate; |
@@ -666,7 +666,7 @@ UChar32 VisiblePosition::characterAfter() const |
// We canonicalize to the first of two equivalent candidates, but the second |
// of the two candidates is the one that will be inside the text node |
// containing the character after this visible position. |
- Position pos = m_deepPosition.downstream(); |
+ Position pos = mostForwardCaretPosition(m_deepPosition); |
if (!pos.isOffsetInAnchor()) |
return 0; |
Node* containerNode = pos.computeContainerNode(); |