Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| index 91eca913ae3b82fd15416100e242ca674fee44bd..aba38d18efb5d36d9ad2213ebec0f6879bc190ba 100644 |
| --- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| +++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| @@ -434,15 +434,21 @@ bool FrameSelection::SelectionHasFocus() const { |
| return false; |
| // No focused element means document root has focus. |
| - const Element* const focused_element = GetDocument().FocusedElement() |
| - ? GetDocument().FocusedElement() |
| - : GetDocument().documentElement(); |
| + Element* const focused_element = GetDocument().FocusedElement() |
| + ? GetDocument().FocusedElement() |
| + : GetDocument().documentElement(); |
| if (!focused_element) |
| return false; |
| if (focused_element->IsTextControl()) |
| return focused_element->ContainsIncludingHostElements(*current); |
| + // Selection has focus if it contains the focused element. |
| + const PositionInFlatTree focused_position(focused_element, 0); |
|
yosin_UTC9
2017/05/23 01:15:50
It is better to use PositionInFlatTree::FirstPosit
|
| + if (ComputeVisibleSelectionInFlatTree().Start() <= focused_position && |
| + ComputeVisibleSelectionInFlatTree().end() >= focused_position) |
| + return true; |
| + |
| bool has_editable_style = HasEditableStyle(*current); |
| do { |
| // If the selection is within an editable sub tree and that sub tree |