servo: Merge #8322 - Properly resize iframe root layers (from mrobinson:iframe-resizing); r=pcwalton

When a layer containing an iframe changes, we also need to resize the
root layer of the subpage. This ensures that content from the child
layer tree is masked to the new size.

Fixes #8301.

Source-Repo: https://github.com/servo/servo
Source-Revision: dc159d055c5e4931648a7046492ec5c63ab922aa
This commit is contained in:
Martin Robinson 2015-11-05 01:54:43 +05:01
Родитель 7417fca571
Коммит 96d027482f
1 изменённых файлов: 13 добавлений и 1 удалений

Просмотреть файл

@ -791,8 +791,20 @@ impl<Window: WindowMethods> IOCompositor<Window> {
self.pipeline_details.remove(&pipeline_id);
}
fn update_layer_if_exists(&mut self, pipeline_id: PipelineId, properties: LayerProperties)
fn update_layer_if_exists(&mut self,
pipeline_id: PipelineId,
properties: LayerProperties)
-> bool {
if let Some(subpage_id) = properties.subpage_pipeline_id {
match self.find_layer_with_pipeline_and_layer_id(subpage_id, LayerId::null()) {
Some(layer) => {
*layer.bounds.borrow_mut() = Rect::from_untyped(
&Rect::new(Point2D::zero(), properties.rect.size));
}
None => warn!("Tried to update non-existent subpage root layer: {:?}", subpage_id),
}
}
match self.find_layer_with_pipeline_and_layer_id(pipeline_id, properties.id) {
Some(existing_layer) => {
existing_layer.update_layer(properties);