aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/compositing/compositor_layer.rs2
-rw-r--r--tests/html/iframe-scroll-stacking.html27
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>