From 8bbb3429b48281b2f043b95d4c2ae7c110309f9d Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Fri, 29 Aug 2025 00:43:29 +0200 Subject: [PATCH] LibWeb: Simplify reverse child traversal in StackingContext::hit_test() No need for manual index fiddling, use Vector::in_reverse(). --- Libraries/LibWeb/Painting/StackingContext.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Libraries/LibWeb/Painting/StackingContext.cpp b/Libraries/LibWeb/Painting/StackingContext.cpp index 512c2c15005..9e4ced1132e 100644 --- a/Libraries/LibWeb/Painting/StackingContext.cpp +++ b/Libraries/LibWeb/Painting/StackingContext.cpp @@ -398,11 +398,10 @@ TraversalDecision StackingContext::hit_test(CSSPixelPoint position, HitTestType // 7. the child stacking contexts with positive stack levels (least positive first). // NOTE: Hit testing follows reverse painting order, that's why the conditions here are reversed. - for (ssize_t i = m_children.size() - 1; i >= 0; --i) { - auto const& child = *m_children[i]; - if (child.paintable_box().computed_values().z_index().value_or(0) <= 0) + for (auto const* child : m_children.in_reverse()) { + if (child->paintable_box().computed_values().z_index().value_or(0) <= 0) break; - if (child.hit_test(transformed_position, type, callback) == TraversalDecision::Break) + if (child->hit_test(transformed_position, type, callback) == TraversalDecision::Break) return TraversalDecision::Break; } @@ -449,11 +448,10 @@ TraversalDecision StackingContext::hit_test(CSSPixelPoint position, HitTestType // 2. the child stacking contexts with negative stack levels (most negative first). // NOTE: Hit testing follows reverse painting order, that's why the conditions here are reversed. - for (ssize_t i = m_children.size() - 1; i >= 0; --i) { - auto const& child = *m_children[i]; - if (child.paintable_box().computed_values().z_index().value_or(0) >= 0) + for (auto const* child : m_children.in_reverse()) { + if (child->paintable_box().computed_values().z_index().value_or(0) >= 0) break; - if (child.hit_test(transformed_position, type, callback) == TraversalDecision::Break) + if (child->hit_test(transformed_position, type, callback) == TraversalDecision::Break) return TraversalDecision::Break; }