diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/layout/layout_text_control_single_line.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/layout/layout_text_control_single_line.cc | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/chromium/third_party/blink/renderer/core/layout/layout_text_control_single_line.cc b/chromium/third_party/blink/renderer/core/layout/layout_text_control_single_line.cc index 9173e224134..135c0ce4703 100644 --- a/chromium/third_party/blink/renderer/core/layout/layout_text_control_single_line.cc +++ b/chromium/third_party/blink/renderer/core/layout/layout_text_control_single_line.cc @@ -138,13 +138,17 @@ void LayoutTextControlSingleLine::UpdateLayout() { bool LayoutTextControlSingleLine::NodeAtPoint( HitTestResult& result, - const HitTestLocation& location_in_container, - const LayoutPoint& accumulated_offset, + const HitTestLocation& hit_test_location, + const PhysicalOffset& accumulated_offset, HitTestAction hit_test_action) { - if (!LayoutTextControl::NodeAtPoint(result, location_in_container, + if (!LayoutTextControl::NodeAtPoint(result, hit_test_location, accumulated_offset, hit_test_action)) return false; + const LayoutObject* stop_node = result.GetHitTestRequest().GetStopNode(); + if (stop_node && stop_node->NodeForHitTest() == result.InnerNode()) + return true; + // Say that we hit the inner text element if // - we hit a node inside the inner text element, // - we hit the <input> element (e.g. we're over the border or padding), or @@ -153,18 +157,18 @@ bool LayoutTextControlSingleLine::NodeAtPoint( if (result.InnerNode()->IsDescendantOf(InnerEditorElement()) || result.InnerNode() == GetNode() || (container && container == result.InnerNode())) { - LayoutPoint point_in_parent = location_in_container.Point(); + PhysicalOffset inner_editor_accumulated_offset = accumulated_offset; if (container && EditingViewPortElement()) { - if (EditingViewPortElement()->GetLayoutBox()) - point_in_parent -= - ToLayoutSize(EditingViewPortElement()->GetLayoutBox()->Location()); - if (container->GetLayoutBox()) - point_in_parent -= ToLayoutSize(container->GetLayoutBox()->Location()); - } - const LayoutObject* stop_node = result.GetHitTestRequest().GetStopNode(); - if (!stop_node || stop_node->NodeForHitTest() != result.InnerNode()) { - HitInnerEditorElement(result, point_in_parent, accumulated_offset); + if (EditingViewPortElement()->GetLayoutBox()) { + inner_editor_accumulated_offset += + EditingViewPortElement()->GetLayoutBox()->PhysicalLocation(); + } + if (container->GetLayoutBox()) { + inner_editor_accumulated_offset += + container->GetLayoutBox()->PhysicalLocation(); + } } + HitInnerEditorElement(result, hit_test_location, accumulated_offset); } return true; } @@ -263,7 +267,7 @@ LayoutUnit LayoutTextControlSingleLine::ComputeControlLogicalHeight( return line_height + non_content_height; } -void LayoutTextControlSingleLine::Autoscroll(const LayoutPoint& position) { +void LayoutTextControlSingleLine::Autoscroll(const PhysicalOffset& position) { LayoutBox* layout_object = InnerEditorElement()->GetLayoutBox(); if (!layout_object) return; |