Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/SelectionController.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/SelectionController.cpp b/third_party/WebKit/Source/core/editing/SelectionController.cpp |
| index 26338841bafdfb5c23fa3546189a18bdac50575d..60618f6a7d5545e4ffe61a56f588c693ac941611 100644 |
| --- a/third_party/WebKit/Source/core/editing/SelectionController.cpp |
| +++ b/third_party/WebKit/Source/core/editing/SelectionController.cpp |
| @@ -81,10 +81,19 @@ DispatchEventResult DispatchSelectStart(Node* node) { |
| VisibleSelectionInFlatTree ExpandSelectionToRespectUserSelectAll( |
| Node* target_node, |
| const VisibleSelectionInFlatTree& selection) { |
| + if (selection.IsNone()) |
| + return selection; |
| Node* const root_user_select_all = |
| EditingInFlatTreeStrategy::RootUserSelectAllForNode(target_node); |
| - if (!root_user_select_all) |
| - return selection; |
| + if (!root_user_select_all) { |
| + SelectionInFlatTree::Builder builder; |
| + if (selection.IsBaseFirst()) |
|
Xiaocheng
2017/06/23 17:31:11
Can we use |builder.SetBaseAndExtent(selection.Bas
yosin_UTC9
2017/06/26 04:14:50
No. When granularity is word/pargraph, base == ext
|
| + builder.SetBaseAndExtent(selection.Start(), selection.End()); |
| + else |
| + builder.SetBaseAndExtent(selection.End(), selection.Start()); |
| + builder.SetAffinity(selection.Affinity()); |
| + return CreateVisibleSelection(builder.Build()); |
| + } |
| return CreateVisibleSelection( |
| SelectionInFlatTree::Builder(selection.AsSelection()) |