diff --git a/Libraries/LibWeb/Painting/PaintableBox.cpp b/Libraries/LibWeb/Painting/PaintableBox.cpp index af145c2f41..12845cc8f6 100644 --- a/Libraries/LibWeb/Painting/PaintableBox.cpp +++ b/Libraries/LibWeb/Painting/PaintableBox.cpp @@ -1203,7 +1203,7 @@ TraversalDecision PaintableWithLines::hit_test(CSSPixelPoint position, HitTestTy return TraversalDecision::Break; } - if (!layout_node().children_are_inline() || m_fragments.is_empty()) + if (!layout_node().children_are_inline()) return PaintableBox::hit_test(position, type, callback); // NOTE: This CSSPixels -> Float -> CSSPixels conversion is because we can't AffineTransform::map() a CSSPixelPoint. @@ -1282,7 +1282,7 @@ TraversalDecision PaintableWithLines::hit_test(CSSPixelPoint position, HitTestTy } } - if (!stacking_context() && is_visible() && !layout_node().is_anonymous() + if (!stacking_context() && is_visible() && (!layout_node().is_anonymous() || layout_node().is_positioned()) && absolute_border_box_rect().contains(position_adjusted_by_scroll_offset)) { if (callback(HitTestResult { const_cast(*this) }) == TraversalDecision::Break) return TraversalDecision::Break; diff --git a/Tests/LibWeb/Text/expected/hit_testing/empty-anonymous-container-overlapping.txt b/Tests/LibWeb/Text/expected/hit_testing/empty-anonymous-container-overlapping.txt new file mode 100644 index 0000000000..e5e7514e22 --- /dev/null +++ b/Tests/LibWeb/Text/expected/hit_testing/empty-anonymous-container-overlapping.txt @@ -0,0 +1,3 @@ +<#text> +index: 4 + diff --git a/Tests/LibWeb/Text/input/hit_testing/empty-anonymous-container-overlapping.html b/Tests/LibWeb/Text/input/hit_testing/empty-anonymous-container-overlapping.html new file mode 100644 index 0000000000..72a5ed0f38 --- /dev/null +++ b/Tests/LibWeb/Text/input/hit_testing/empty-anonymous-container-overlapping.html @@ -0,0 +1,19 @@ + + + +
You should be able to click this link

+