Index: Source/core/editing/EditingUtilities.cpp |
diff --git a/Source/core/editing/EditingUtilities.cpp b/Source/core/editing/EditingUtilities.cpp |
index 1b233074d2310b456a72dffa03fc8119b4ca68e8..5dd15b02a37f769d05df1f1d7cc8b2da1fb4fd0c 100644 |
--- a/Source/core/editing/EditingUtilities.cpp |
+++ b/Source/core/editing/EditingUtilities.cpp |
@@ -360,24 +360,35 @@ PositionInComposedTree nextCandidate(const PositionInComposedTree& position) |
// |nextVisuallyDistinctCandidate| is similar to |nextCandidate| except |
// for returning position which |downstream()| not equal to initial position's |
// |downstream()|. |
-Position nextVisuallyDistinctCandidate(const Position& position) |
+template <typename Strategy> |
+static PositionAlgorithm<Strategy> nextVisuallyDistinctCandidateAlgorithm(const PositionAlgorithm<Strategy>& position) |
{ |
if (position.isNull()) |
- return Position(); |
+ return PositionAlgorithm<Strategy>(); |
- PositionIterator p(position); |
- Position downstreamStart = mostForwardCaretPosition(position); |
+ PositionIteratorAlgorithm<Strategy> p(position); |
+ const PositionAlgorithm<Strategy> downstreamStart = mostForwardCaretPosition(position); |
p.increment(); |
while (!p.atEnd()) { |
- Position candidate = p.computePosition(); |
+ PositionAlgorithm<Strategy> candidate = p.computePosition(); |
if (isVisuallyEquivalentCandidate(candidate) && mostForwardCaretPosition(candidate) != downstreamStart) |
return candidate; |
p.increment(); |
} |
- return Position(); |
+ return PositionAlgorithm<Strategy>(); |
+} |
+ |
+Position nextVisuallyDistinctCandidate(const Position& position) |
+{ |
+ return nextVisuallyDistinctCandidateAlgorithm<EditingStrategy>(position); |
+} |
+ |
+PositionInComposedTree nextVisuallyDistinctCandidate(const PositionInComposedTree& position) |
+{ |
+ return nextVisuallyDistinctCandidateAlgorithm<EditingInComposedTreeStrategy>(position); |
} |
template <typename Strategy> |