Index: Source/core/editing/VisiblePosition.cpp |
diff --git a/Source/core/editing/VisiblePosition.cpp b/Source/core/editing/VisiblePosition.cpp |
index 320ce7a661d5eea577589eacf2b9e2ec0f9b48b5..4e9143e54e075f79c754781d676ee90002c60d5a 100644 |
--- a/Source/core/editing/VisiblePosition.cpp |
+++ b/Source/core/editing/VisiblePosition.cpp |
@@ -64,6 +64,10 @@ VisiblePosition::VisiblePosition(const PositionWithAffinity& positionWithAffinit |
init(positionWithAffinity.position(), positionWithAffinity.affinity()); |
} |
+// TODO(yosin) We should move implementation of |skipToEndOfEditingBoundary()| |
+// here to avoid forward declaration. |
+static VisiblePosition skipToEndOfEditingBoundary(const VisiblePosition&, const Position& anchor); |
+ |
// TODO(yosin) We should move |nextPositionOf()| to "VisibleUnits.cpp". |
VisiblePosition nextPositionOf(const VisiblePosition& visiblePosition, EditingBoundaryCrossingRule rule) |
{ |
@@ -75,12 +79,16 @@ VisiblePosition nextPositionOf(const VisiblePosition& visiblePosition, EditingBo |
case CannotCrossEditingBoundary: |
return visiblePosition.honorEditingBoundaryAtOrAfter(next); |
case CanSkipOverEditingBoundary: |
- return visiblePosition.skipToEndOfEditingBoundary(next); |
+ return skipToEndOfEditingBoundary(next, visiblePosition.deepEquivalent()); |
} |
ASSERT_NOT_REACHED(); |
return visiblePosition.honorEditingBoundaryAtOrAfter(next); |
} |
+// TODO(yosin) We should move implementation of |skipToStartOfEditingBoundary()| |
+// here to avoid forward declaration. |
+static VisiblePosition skipToStartOfEditingBoundary(const VisiblePosition&, const Position& anchor); |
+ |
VisiblePosition previousPositionOf(const VisiblePosition& visiblePosition, EditingBoundaryCrossingRule rule) |
{ |
Position pos = previousVisuallyDistinctCandidate(visiblePosition.deepEquivalent()); |
@@ -108,7 +116,7 @@ VisiblePosition previousPositionOf(const VisiblePosition& visiblePosition, Editi |
case CannotCrossEditingBoundary: |
return visiblePosition.honorEditingBoundaryAtOrBefore(prev); |
case CanSkipOverEditingBoundary: |
- return visiblePosition.skipToStartOfEditingBoundary(prev); |
+ return skipToStartOfEditingBoundary(prev, visiblePosition.deepEquivalent()); |
} |
ASSERT_NOT_REACHED(); |
@@ -514,12 +522,14 @@ VisiblePosition VisiblePosition::honorEditingBoundaryAtOrAfter(const VisiblePosi |
return firstEditableVisiblePositionAfterPositionInRoot(pos.deepEquivalent(), highestRoot); |
} |
-VisiblePosition VisiblePosition::skipToStartOfEditingBoundary(const VisiblePosition &pos) const |
+// TODO(yosin) We should move implementation of |skipToStartOfEditingBoundary()| |
+// at forward declaration and re-format comments to fit 80 chars. |
+static VisiblePosition skipToStartOfEditingBoundary(const VisiblePosition& pos, const Position& anchor) |
{ |
if (pos.isNull()) |
return pos; |
- ContainerNode* highestRoot = highestEditableRoot(deepEquivalent()); |
+ ContainerNode* highestRoot = highestEditableRoot(anchor); |
ContainerNode* highestRootOfPos = highestEditableRoot(pos.deepEquivalent()); |
// Return pos itself if the two are from the very same editable region, or both are non-editable. |
@@ -534,12 +544,14 @@ VisiblePosition VisiblePosition::skipToStartOfEditingBoundary(const VisiblePosit |
return lastEditableVisiblePositionBeforePositionInRoot(pos.deepEquivalent(), highestRoot); |
} |
-VisiblePosition VisiblePosition::skipToEndOfEditingBoundary(const VisiblePosition &pos) const |
+// TODO(yosin) We should move implementation of |skipToEndOfEditingBoundary()| |
+// at forward declaration and re-format comments to fit 80 chars. |
+static VisiblePosition skipToEndOfEditingBoundary(const VisiblePosition& pos, const Position& anchor) |
{ |
if (pos.isNull()) |
return pos; |
- ContainerNode* highestRoot = highestEditableRoot(deepEquivalent()); |
+ ContainerNode* highestRoot = highestEditableRoot(anchor); |
ContainerNode* highestRootOfPos = highestEditableRoot(pos.deepEquivalent()); |
// Return pos itself if the two are from the very same editable region, or both are non-editable. |