LibWeb+LibGfx: Make IntersectionObserver checks edge-inclusive

This fixes an issue where 0x0 rectangles were not considered to be
intersecting, even when they fell inside (or were adjacent to) the
viewport.
This commit is contained in:
Andreas Kling 2025-02-16 12:17:07 +01:00 committed by Andreas Kling
commit 31a69ce887
Notes: github-actions[bot] 2025-02-16 17:10:02 +00:00
3 changed files with 11 additions and 6 deletions

View file

@ -4583,7 +4583,7 @@ void Document::run_the_update_intersection_observations_steps(HighResolutionTime
// 8. Let isIntersecting be true if targetRect and rootBounds intersect or are edge-adjacent, even if the
// intersection has zero area (because rootBounds or targetRect have zero area).
CSSPixelRect target_rect_as_pixel_rect(target_rect->x(), target_rect->y(), target_rect->width(), target_rect->height());
is_intersecting = target_rect_as_pixel_rect.intersects(root_bounds);
is_intersecting = target_rect_as_pixel_rect.edge_adjacent_intersects(root_bounds);
// 9. If targetArea is non-zero, let intersectionRatio be intersectionArea divided by targetArea.
// Otherwise, let intersectionRatio be 1 if isIntersecting is true, or 0 if isIntersecting is false.