LibWeb: Don't hit test a stacked child if it is behind its parent

When hit testing a stacked context, skip hit testing children if the
child's z-index is less than the parent's. The children are already
sorted by z-index, but also need to consider the parent.
This commit is contained in:
Timothy Flynn 2021-03-31 10:26:11 -04:00 committed by Andreas Kling
parent 2cc10c62ee
commit 53ccfc1f4c
Notes: sideshowbarker 2024-07-18 20:55:41 +09:00

View file

@ -73,7 +73,13 @@ HitTestResult StackingContext::hit_test(const Gfx::IntPoint& position, HitTestTy
result = downcast<InitialContainingBlockBox>(m_box).BlockBox::hit_test(position, type);
}
int z_index = m_box.computed_values().z_index().value_or(0);
for (auto* child : m_children) {
int child_z_index = child->m_box.computed_values().z_index().value_or(0);
if (result.layout_node && (child_z_index < z_index))
continue;
auto result_here = child->hit_test(position, type);
if (result_here.layout_node)
result = result_here;