From fa1e06e7ceb22a207b5dd7a0cd682c87b072101a Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 12 Dec 2014 16:33:36 -0800 Subject: [PATCH] compositing: Translate clip rects into the coordinate systems of child layers when doing hit tests. Fixes clicking on links on the second page of Hacker News. --- components/compositing/compositor.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index befa0fce662..21cfcfdcd86 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -1125,9 +1125,12 @@ impl IOCompositor { let child_point = point - layer_bounds.origin; for child in layer.children().iter().rev() { + // Translate the clip rect into the child's coordinate system. + let clip_rect_for_child = + clip_rect_for_children.translate(&-*child.content_offset.borrow()); let result = self.find_topmost_layer_at_point_for_layer(child.clone(), child_point, - &clip_rect_for_children); + &clip_rect_for_child); if result.is_some() { return result; } @@ -1145,9 +1148,11 @@ impl IOCompositor { point: TypedPoint2D) -> Option { match self.scene.root { - Some(ref layer) => self.find_topmost_layer_at_point_for_layer(layer.clone(), - point, - &*layer.bounds.borrow()), + Some(ref layer) => { + self.find_topmost_layer_at_point_for_layer(layer.clone(), + point, + &*layer.bounds.borrow()) + } None => None, }