diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/main/compositing/compositor_layer.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/components/main/compositing/compositor_layer.rs b/src/components/main/compositing/compositor_layer.rs index f11dd54156b..4cc701d2ff6 100644 --- a/src/components/main/compositing/compositor_layer.rs +++ b/src/components/main/compositing/compositor_layer.rs @@ -244,10 +244,15 @@ impl CompositorLayer { let transform = |x: &mut CompositorLayerChild| -> bool { match x.container.scissor { Some(scissor) => { - let new_rect = window_rect.intersection(&scissor); + let new_rect = rect.intersection(&scissor); match new_rect { Some(new_rect) => { - x.child.get_buffer_request(new_rect, scale) + // Child layers act as if they are rendered at (0,0), so we + // subtract the layer's (x,y) coords in its containing page + // to make the child_rect appear in coordinates local to it. + let child_rect = Rect(new_rect.origin.sub(&scissor.origin), + new_rect.size); + x.child.get_buffer_request(child_rect, scale) } None => { false //Layer is offscreen |