Skip to content

Commit

Permalink
Force root flow's box size to coincide with the viewport if child
Browse files Browse the repository at this point in the history
flows have less combined height than the viewport height.

This makes Issue #218 go away in the case when the HTML element's
style specifies a background color.
  • Loading branch information
Brian J. Burg committed Nov 19, 2012
1 parent 02e0734 commit d761957
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions src/servo/layout/root.rs
Expand Up @@ -48,20 +48,37 @@ impl FlowContext : RootLayout {
fn assign_widths_root(@self, ctx: &LayoutContext) {
assert self.starts_root_flow();

self.d().position = copy ctx.screen_size;
self.d().position.origin = Au::zero_point();
self.d().position.size.width = ctx.screen_size.size.width;

self.assign_widths_block(ctx)
}

fn assign_height_root(@self, ctx: &LayoutContext) {
assert self.starts_root_flow();

self.assign_height_block(ctx);
// this is essentially the same as assign_height_block(), except
// the root adjusts self height to at least cover the viewport.
let mut cur_y = Au(0);

for FlowTree.each_child(self) |child_ctx| {
child_ctx.d().position.origin.y = cur_y;
cur_y += child_ctx.d().position.size.height;
}

self.d().position.size.height = Au::max(ctx.screen_size.size.height, cur_y);

do self.with_block_box |box| {
box.d().position.origin.y = Au(0);
box.d().position.size.height = Au::max(ctx.screen_size.size.height, cur_y);
let (_used_top, _used_bot) = box.get_used_height();
}
}

fn build_display_list_root(@self, builder: &DisplayListBuilder, dirty: &Rect<Au>,
offset: &Point2D<Au>, list: &mut DisplayList) {
assert self.starts_root_flow();

self.build_display_list_block(builder, dirty, offset, list);
}
}

0 comments on commit d761957

Please sign in to comment.