| Index: Source/core/editing/VisiblePosition.cpp
|
| diff --git a/Source/core/editing/VisiblePosition.cpp b/Source/core/editing/VisiblePosition.cpp
|
| index 4e9143e54e075f79c754781d676ee90002c60d5a..c7ccc8110464c32f204961cd147a046a6efe43e9 100644
|
| --- a/Source/core/editing/VisiblePosition.cpp
|
| +++ b/Source/core/editing/VisiblePosition.cpp
|
| @@ -77,12 +77,12 @@ VisiblePosition nextPositionOf(const VisiblePosition& visiblePosition, EditingBo
|
| case CanCrossEditingBoundary:
|
| return next;
|
| case CannotCrossEditingBoundary:
|
| - return visiblePosition.honorEditingBoundaryAtOrAfter(next);
|
| + return honorEditingBoundaryAtOrAfter(next, visiblePosition.deepEquivalent());
|
| case CanSkipOverEditingBoundary:
|
| return skipToEndOfEditingBoundary(next, visiblePosition.deepEquivalent());
|
| }
|
| ASSERT_NOT_REACHED();
|
| - return visiblePosition.honorEditingBoundaryAtOrAfter(next);
|
| + return honorEditingBoundaryAtOrAfter(next, visiblePosition.deepEquivalent());
|
| }
|
|
|
| // TODO(yosin) We should move implementation of |skipToStartOfEditingBoundary()|
|
| @@ -114,13 +114,13 @@ VisiblePosition previousPositionOf(const VisiblePosition& visiblePosition, Editi
|
| case CanCrossEditingBoundary:
|
| return prev;
|
| case CannotCrossEditingBoundary:
|
| - return visiblePosition.honorEditingBoundaryAtOrBefore(prev);
|
| + return honorEditingBoundaryAtOrBefore(prev, visiblePosition.deepEquivalent());
|
| case CanSkipOverEditingBoundary:
|
| return skipToStartOfEditingBoundary(prev, visiblePosition.deepEquivalent());
|
| }
|
|
|
| ASSERT_NOT_REACHED();
|
| - return visiblePosition.honorEditingBoundaryAtOrBefore(prev);
|
| + return honorEditingBoundaryAtOrBefore(prev, visiblePosition.deepEquivalent());
|
| }
|
|
|
| // TODO(yosin) We should move |rightVisuallyDistinctCandidate()| with
|
| @@ -284,7 +284,7 @@ VisiblePosition leftPositionOf(const VisiblePosition& visiblePosition)
|
| VisiblePosition left = VisiblePosition(pos);
|
| ASSERT(left.deepEquivalent() != visiblePosition.deepEquivalent());
|
|
|
| - return directionOfEnclosingBlock(left.deepEquivalent()) == LTR ? visiblePosition.honorEditingBoundaryAtOrBefore(left) : visiblePosition.honorEditingBoundaryAtOrAfter(left);
|
| + return directionOfEnclosingBlock(left.deepEquivalent()) == LTR ? honorEditingBoundaryAtOrBefore(left, visiblePosition.deepEquivalent()) : honorEditingBoundaryAtOrAfter(left, visiblePosition.deepEquivalent());
|
| }
|
|
|
| // TODO(yosin) We should move |rightVisuallyDistinctCandidate()| with
|
| @@ -451,7 +451,7 @@ VisiblePosition rightPositionOf(const VisiblePosition& visiblePosition)
|
| VisiblePosition right = VisiblePosition(pos);
|
| ASSERT(right.deepEquivalent() != visiblePosition.deepEquivalent());
|
|
|
| - return directionOfEnclosingBlock(right.deepEquivalent()) == LTR ? visiblePosition.honorEditingBoundaryAtOrAfter(right) : visiblePosition.honorEditingBoundaryAtOrBefore(right);
|
| + return directionOfEnclosingBlock(right.deepEquivalent()) == LTR ? honorEditingBoundaryAtOrAfter(right, visiblePosition.deepEquivalent()) : honorEditingBoundaryAtOrBefore(right, visiblePosition.deepEquivalent());
|
| }
|
|
|
| template <typename Strategy>
|
| @@ -491,17 +491,17 @@ PositionInComposedTreeWithAffinity honorEditingBoundaryAtOrBeforeOf(const Positi
|
| return honorEditingBoundaryAtOrBeforeAlgorithm(pos, anchor);
|
| }
|
|
|
| -VisiblePosition VisiblePosition::honorEditingBoundaryAtOrBefore(const VisiblePosition &pos) const
|
| +VisiblePosition honorEditingBoundaryAtOrBefore(const VisiblePosition& pos, const Position& anchor)
|
| {
|
| - return VisiblePosition(honorEditingBoundaryAtOrBeforeOf(pos.toPositionWithAffinity(), deepEquivalent()));
|
| + return VisiblePosition(honorEditingBoundaryAtOrBeforeOf(pos.toPositionWithAffinity(), anchor));
|
| }
|
|
|
| -VisiblePosition VisiblePosition::honorEditingBoundaryAtOrAfter(const VisiblePosition &pos) const
|
| +VisiblePosition honorEditingBoundaryAtOrAfter(const VisiblePosition& pos, const Position& anchor)
|
| {
|
| if (pos.isNull())
|
| return pos;
|
|
|
| - ContainerNode* highestRoot = highestEditableRoot(deepEquivalent());
|
| + ContainerNode* highestRoot = highestEditableRoot(anchor);
|
|
|
| // Return empty position if pos is not somewhere inside the editable region containing this position
|
| if (highestRoot && !pos.deepEquivalent().anchorNode()->isDescendantOf(highestRoot))
|
|
|