LibWeb: Prevent StackingContext from hit testing when not visible

It exits if not visible, then hit tests children, then hit tests itself
if it's `visible_for_hit_testing()`.
This commit is contained in:
zac 2025-09-08 21:39:52 +10:00 committed by Alexander Kalenik
parent e2eb8716e5
commit 4e892b8b67
Notes: github-actions[bot] 2025-09-08 13:37:34 +00:00
3 changed files with 37 additions and 0 deletions

View file

@ -388,6 +388,9 @@ void StackingContext::paint(DisplayListRecordingContext& context) const
TraversalDecision StackingContext::hit_test(CSSPixelPoint position, HitTestType type, Function<TraversalDecision(HitTestResult)> const& callback) const
{
if (paintable_box().computed_values().visibility() != CSS::Visibility::Visible)
return TraversalDecision::Continue;
auto const inverse_transform = affine_transform_matrix().inverse().value_or({});
auto const transform_origin = paintable_box().transform_origin();
// NOTE: This CSSPixels -> Float -> CSSPixels conversion is because we can't AffineTransform::map() a CSSPixelPoint.