Commit 47449c20 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Move FrameSelection::Modify() for page granularity to EditorComamand.cpp

2017-07-14T11:14:28

2017-07-14T11: 14:22
Bug: 
Change-Id: I39e2a7d0906be5f8883d7467d2414babf6a84362
Reviewed-on: https://chromium-review.googlesource.com/571559Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486694}
parent 14cf2beb
......@@ -397,26 +397,6 @@ bool FrameSelection::Modify(EAlteration alter,
return true;
}
bool FrameSelection::Modify(EAlteration alter,
unsigned vertical_distance,
VerticalDirection direction) {
SelectionModifier selection_modifier(*GetFrame(),
ComputeVisibleSelectionInDOMTree());
if (!selection_modifier.ModifyWithPageGranularity(alter, vertical_distance,
direction)) {
return false;
}
SetSelection(selection_modifier.Selection().AsSelection(),
kCloseTyping | kClearTypingStyle | kUserTriggered,
alter == kAlterationMove ? CursorAlignOnScroll::kAlways
: CursorAlignOnScroll::kIfNeeded);
granularity_ = TextGranularity::kCharacter;
return true;
}
void FrameSelection::Clear() {
granularity_ = TextGranularity::kCharacter;
if (granularity_strategy_)
......
......@@ -147,7 +147,6 @@ class CORE_EXPORT FrameSelection final
TextGranularity,
EUserTriggered = kNotUserTriggered);
enum VerticalDirection { kDirectionUp, kDirectionDown };
bool Modify(EAlteration, unsigned vertical_distance, VerticalDirection);
// Moves the selection extent based on the selection granularity strategy.
// This function does not allow the selection to collapse. If the new
......
......@@ -1224,6 +1224,29 @@ static bool ExecuteMoveLeftAndModifySelection(LocalFrame& frame,
return true;
}
// Returns true if selection is modified.
bool ModifySelectionyWithPageGranularity(
LocalFrame& frame,
FrameSelection::EAlteration alter,
unsigned vertical_distance,
FrameSelection::VerticalDirection direction) {
SelectionModifier selection_modifier(
frame, frame.Selection().ComputeVisibleSelectionInDOMTree());
if (!selection_modifier.ModifyWithPageGranularity(alter, vertical_distance,
direction)) {
return false;
}
frame.Selection().SetSelection(selection_modifier.Selection().AsSelection(),
FrameSelection::kCloseTyping |
FrameSelection::kClearTypingStyle |
kUserTriggered,
alter == FrameSelection::kAlterationMove
? CursorAlignOnScroll::kAlways
: CursorAlignOnScroll::kIfNeeded);
return true;
}
static bool ExecuteMovePageDown(LocalFrame& frame,
Event*,
EditorCommandSource,
......@@ -1231,8 +1254,9 @@ static bool ExecuteMovePageDown(LocalFrame& frame,
unsigned distance = VerticalScrollDistance(frame);
if (!distance)
return false;
return frame.Selection().Modify(FrameSelection::kAlterationMove, distance,
FrameSelection::kDirectionDown);
return ModifySelectionyWithPageGranularity(
frame, FrameSelection::kAlterationMove, distance,
FrameSelection::kDirectionDown);
}
static bool ExecuteMovePageDownAndModifySelection(LocalFrame& frame,
......@@ -1242,8 +1266,9 @@ static bool ExecuteMovePageDownAndModifySelection(LocalFrame& frame,
unsigned distance = VerticalScrollDistance(frame);
if (!distance)
return false;
return frame.Selection().Modify(FrameSelection::kAlterationExtend, distance,
FrameSelection::kDirectionDown);
return ModifySelectionyWithPageGranularity(
frame, FrameSelection::kAlterationExtend, distance,
FrameSelection::kDirectionDown);
}
static bool ExecuteMovePageUp(LocalFrame& frame,
......@@ -1253,8 +1278,9 @@ static bool ExecuteMovePageUp(LocalFrame& frame,
unsigned distance = VerticalScrollDistance(frame);
if (!distance)
return false;
return frame.Selection().Modify(FrameSelection::kAlterationMove, distance,
FrameSelection::kDirectionUp);
return ModifySelectionyWithPageGranularity(
frame, FrameSelection::kAlterationMove, distance,
FrameSelection::kDirectionUp);
}
static bool ExecuteMovePageUpAndModifySelection(LocalFrame& frame,
......@@ -1264,8 +1290,9 @@ static bool ExecuteMovePageUpAndModifySelection(LocalFrame& frame,
unsigned distance = VerticalScrollDistance(frame);
if (!distance)
return false;
return frame.Selection().Modify(FrameSelection::kAlterationExtend, distance,
FrameSelection::kDirectionUp);
return ModifySelectionyWithPageGranularity(
frame, FrameSelection::kAlterationExtend, distance,
FrameSelection::kDirectionUp);
}
static bool ExecuteMoveRight(LocalFrame& frame,
......
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