diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 1281775ee0b..04cbaccad92 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -1178,9 +1178,9 @@ impl Fragment { -> IntrinsicISizes { let mut result = self.style_specified_intrinsic_inline_size(); - match self.specific { + let use_border_padding = match self.specific { GenericFragment | IframeFragment(_) | TableFragment | TableCellFragment | TableColumnFragment(_) | TableRowFragment | - TableWrapperFragment => {} + TableWrapperFragment => { true } InlineBlockFragment(ref mut info) => { let block_flow = info.flow_ref.get_mut().as_block(); result.minimum_inline_size = max(result.minimum_inline_size, @@ -1189,11 +1189,13 @@ impl Fragment { result.preferred_inline_size = max(result.preferred_inline_size, block_flow.base.intrinsic_inline_sizes.preferred_inline_size + block_flow.base.intrinsic_inline_sizes.surround_inline_size); + false }, ImageFragment(ref mut image_fragment_info) => { let image_inline_size = image_fragment_info.image_inline_size(); result.minimum_inline_size = max(result.minimum_inline_size, image_inline_size); result.preferred_inline_size = max(result.preferred_inline_size, image_inline_size); + true } ScannedTextFragment(ref text_fragment_info) => { let range = &text_fragment_info.range; @@ -1205,19 +1207,22 @@ impl Fragment { result.minimum_inline_size = max(result.minimum_inline_size, min_line_inline_size); result.preferred_inline_size = max(result.preferred_inline_size, max_line_inline_size); + true } UnscannedTextFragment(..) => fail!("Unscanned text fragments should have been scanned by now!"), - } + }; // Take borders and padding for parent inline fragments into account, if necessary. - match self.inline_context { - None => {} - Some(ref context) => { - for style in context.styles.iter() { - let border_width = style.logical_border_width().inline_start_end(); - let padding_inline_size = model::padding_from_style(&**style, Au(0)).inline_start_end(); - result.minimum_inline_size = result.minimum_inline_size + border_width + padding_inline_size; - result.preferred_inline_size = result.preferred_inline_size + border_width + padding_inline_size; + if use_border_padding { + match self.inline_context { + None => {} + Some(ref context) => { + for style in context.styles.iter() { + let border_width = style.logical_border_width().inline_start_end(); + let padding_inline_size = model::padding_from_style(&**style, Au(0)).inline_start_end(); + result.minimum_inline_size = result.minimum_inline_size + border_width + padding_inline_size; + result.preferred_inline_size = result.preferred_inline_size + border_width + padding_inline_size; + } } } } @@ -1447,8 +1452,7 @@ impl Fragment { InlineBlockFragment(ref mut info) => { let block_flow = info.flow_ref.get_mut().as_block(); self.border_box.size.inline = block_flow.base.intrinsic_inline_sizes.preferred_inline_size + - block_flow.base.intrinsic_inline_sizes.surround_inline_size + - noncontent_inline_size; + block_flow.base.intrinsic_inline_sizes.surround_inline_size; block_flow.base.position.size.inline = self.border_box.size.inline; } ScannedTextFragment(_) => { diff --git a/tests/ref/basic.list b/tests/ref/basic.list index c67aed95d13..88c40413d69 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -140,3 +140,4 @@ flaky_gpu,flaky_linux == acid2_noscroll.html acid2_ref_broken.html == img_block_maxwidth_b.html img_block_maxwidth_ref.html == float_clearance_a.html float_clearance_ref.html == block_formatting_context_a.html block_formatting_context_ref.html +== inline_block_parent_padding_a.html inline_block_parent_padding_ref.html diff --git a/tests/ref/css/ahem.css b/tests/ref/css/ahem.css new file mode 100644 index 00000000000..ef0395b0503 --- /dev/null +++ b/tests/ref/css/ahem.css @@ -0,0 +1,10 @@ +@font-face { + font-family: 'ahem'; + src: url(../fonts/ahem/ahem.ttf); +} + +body { + font-family: 'ahem'; + font-size: 100px; + line-height: 1; +} diff --git a/tests/ref/inline_block_parent_padding_a.html b/tests/ref/inline_block_parent_padding_a.html new file mode 100644 index 00000000000..c4f7813aaeb --- /dev/null +++ b/tests/ref/inline_block_parent_padding_a.html @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/tests/ref/inline_block_parent_padding_ref.html b/tests/ref/inline_block_parent_padding_ref.html new file mode 100644 index 00000000000..3dcefd3ad8a --- /dev/null +++ b/tests/ref/inline_block_parent_padding_ref.html @@ -0,0 +1,26 @@ + + + + + + +
+
+
+ +