diff options
-rw-r--r-- | components/compositing/compositor_layer.rs | 2 | ||||
-rw-r--r-- | tests/html/iframe-scroll-stacking.html | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/components/compositing/compositor_layer.rs b/components/compositing/compositor_layer.rs index 9c7d567c43a..9e2b47a5c08 100644 --- a/components/compositing/compositor_layer.rs +++ b/components/compositing/compositor_layer.rs @@ -317,7 +317,7 @@ impl CompositorLayer for Layer<CompositorData> { // Allow children to scroll. let scroll_offset = self.extra_data.borrow().scroll_offset; let new_cursor = cursor - scroll_offset; - for child in &*self.children() { + for child in self.children().iter().rev() { let child_bounds = child.bounds.borrow(); if child_bounds.contains(&new_cursor) { let result = child.handle_scroll_event(delta, new_cursor - child_bounds.origin); diff --git a/tests/html/iframe-scroll-stacking.html b/tests/html/iframe-scroll-stacking.html new file mode 100644 index 00000000000..a554bede526 --- /dev/null +++ b/tests/html/iframe-scroll-stacking.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<style> + body { + margin: 0; + } + + iframe { + display: block; + width: 300px; + height: 300px; + position: absolute; + background: white; + } + + .i1 { + top: 50px; + left: 50px; + } + + .i2 { + top: 100px; + left: 100px; + } +</style> + +<iframe class="i1" src="lipsum.html"></iframe> +<iframe class="i2" src="lipsum.html"></iframe> |