Commit e3697033 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Refactor SelectionModifier::ModifyMovingForward()

This patch changes SelectionModifier::ModifyMovingForward() to utilize
early-return style for improving readability.

Change-Id: I39e9659b787a7366b46b77c0bd9a9cf45b11765c
Reviewed-on: https://chromium-review.googlesource.com/566161
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485593}
parent 9782b5fd
......@@ -325,60 +325,51 @@ VisiblePosition SelectionModifier::ModifyMovingRight(
VisiblePosition SelectionModifier::ModifyMovingForward(
TextGranularity granularity) {
VisiblePosition pos;
// FIXME: Stay in editable content for the less common granularities.
// TODO(editing-dev): Stay in editable content for the less common
// granularities.
switch (granularity) {
case TextGranularity::kCharacter:
if (selection_.IsRange())
pos = CreateVisiblePosition(selection_.End(), selection_.Affinity());
else
pos = NextPositionOf(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
kCanSkipOverEditingBoundary);
break;
return CreateVisiblePosition(selection_.End(), selection_.Affinity());
return NextPositionOf(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
kCanSkipOverEditingBoundary);
case TextGranularity::kWord:
pos = NextWordPositionForPlatform(
return NextWordPositionForPlatform(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
break;
case TextGranularity::kSentence:
pos = NextSentencePosition(
return NextSentencePosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
break;
case TextGranularity::kLine: {
// down-arrowing from a range selection that ends at the start of a line
// needs to leave the selection at that line start (no need to call
// nextLinePosition!)
pos = EndForPlatform();
if (!selection_.IsRange() || !IsStartOfLine(pos)) {
pos = NextLinePosition(
pos,
LineDirectionPointForBlockDirectionNavigation(selection_.Start()));
}
break;
const VisiblePosition& pos = EndForPlatform();
if (selection_.IsRange() && IsStartOfLine(pos))
return pos;
return NextLinePosition(
pos,
LineDirectionPointForBlockDirectionNavigation(selection_.Start()));
}
case TextGranularity::kParagraph:
pos = NextParagraphPosition(
return NextParagraphPosition(
EndForPlatform(),
LineDirectionPointForBlockDirectionNavigation(selection_.Start()));
break;
case TextGranularity::kSentenceBoundary:
pos = EndOfSentence(EndForPlatform());
break;
return EndOfSentence(EndForPlatform());
case TextGranularity::kLineBoundary:
pos = LogicalEndOfLine(EndForPlatform());
break;
return LogicalEndOfLine(EndForPlatform());
case TextGranularity::kParagraphBoundary:
pos = EndOfParagraph(EndForPlatform());
break;
case TextGranularity::kDocumentBoundary:
pos = EndForPlatform();
return EndOfParagraph(EndForPlatform());
case TextGranularity::kDocumentBoundary: {
const VisiblePosition& pos = EndForPlatform();
if (IsEditablePosition(pos.DeepEquivalent()))
pos = EndOfEditableContent(pos);
else
pos = EndOfDocument(pos);
break;
return EndOfEditableContent(pos);
return EndOfDocument(pos);
}
}
return pos;
NOTREACHED() << static_cast<int>(granularity);
return VisiblePosition();
}
VisiblePosition SelectionModifier::ModifyExtendingLeft(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment