Don't translate point for independent stacking contexts

I took the test for hit_test from:
https://github.com/servo/servo/pull/15047/commits/602b45a3724747e1be767605c523c510846cfbf6
Thank you emilio
This commit is contained in:
Florian Merz 2017-01-16 18:52:27 +01:00 committed by Emilio Cobos Álvarez
parent 602b45a372
commit 65f3ac7d19

View file

@ -55,11 +55,10 @@ impl DisplayList {
scroll_offsets: &ScrollOffsetMap)
-> Option<usize> {
let mut result = Vec::new();
let mut translated_point = client_point.clone();
let mut traversal = DisplayListTraversal::new(self);
self.text_index_contents(node,
&mut traversal,
&mut translated_point,
client_point,
client_point,
scroll_offsets,
&mut result);
@ -69,30 +68,32 @@ impl DisplayList {
pub fn text_index_contents<'a>(&self,
node: OpaqueNode,
traversal: &mut DisplayListTraversal<'a>,
translated_point: &mut Point2D<Au>,
translated_point: &Point2D<Au>,
client_point: &Point2D<Au>,
scroll_offsets: &ScrollOffsetMap,
result: &mut Vec<usize>) {
while let Some(item) = traversal.next() {
match item {
&DisplayItem::PushStackingContext(ref stacking_context_item) => {
let mut point = *translated_point;
DisplayList::translate_point(&stacking_context_item.stacking_context,
translated_point,
&mut point,
client_point);
self.text_index_contents(node,
traversal,
translated_point,
&point,
client_point,
scroll_offsets,
result);
}
&DisplayItem::PushScrollRoot(ref item) => {
let mut point = *translated_point;
DisplayList::scroll_root(&item.scroll_root,
translated_point,
&mut point,
scroll_offsets);
self.text_index_contents(node,
traversal,
translated_point,
&point,
client_point,
scroll_offsets,
result);