diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 89b6d743fd1..adc0d001607 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -982,10 +982,11 @@ impl Fragment { fn style_specified_intrinsic_inline_size(&self) -> IntrinsicISizesContribution { let flags = self.quantities_included_in_intrinsic_inline_size(); let style = self.style(); - let specified = if flags.contains(INTRINSIC_INLINE_SIZE_INCLUDES_SPECIFIED) { - MaybeAuto::from_style(style.content_inline_size(), Au(0)).specified_or_zero() + let (min_inline_size, specified) = if flags.contains(INTRINSIC_INLINE_SIZE_INCLUDES_SPECIFIED) { + (model::specified(style.min_inline_size(), Au(0)), + MaybeAuto::from_style(style.content_inline_size(), Au(0)).specified_or_zero()) } else { - Au(0) + (Au(0), Au(0)) }; // FIXME(#2261, pcwalton): This won't work well for inlines: is this OK? @@ -993,7 +994,7 @@ impl Fragment { IntrinsicISizesContribution { content_intrinsic_sizes: IntrinsicISizes { - minimum_inline_size: specified, + minimum_inline_size: min_inline_size, preferred_inline_size: specified, }, surrounding_size: surrounding_inline_size, @@ -1721,7 +1722,8 @@ impl Fragment { SpecificFragmentInfo::InlineBlock(ref mut info) => { let block_flow = info.flow_ref.as_block(); self.border_box.size.inline = - block_flow.base.intrinsic_inline_sizes.preferred_inline_size; + max(block_flow.base.intrinsic_inline_sizes.minimum_inline_size, + block_flow.base.intrinsic_inline_sizes.preferred_inline_size); block_flow.base.block_container_inline_size = self.border_box.size.inline; } SpecificFragmentInfo::ScannedText(ref info) => { diff --git a/tests/ref/basic.list b/tests/ref/basic.list index 9f25fa7af1d..85730788883 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -156,6 +156,7 @@ fragment=top != ../html/acid2.html acid2_ref.html == img_block_display_a.html img_block_display_ref.html == after_block_iteration.html after_block_iteration_ref.html == inline_block_percentage_height_a.html inline_block_percentage_height_ref.html +== inline_block_min_width.html inline_block_min_width_ref.html == percentage_height_float_a.html percentage_height_float_ref.html == img_block_maxwidth_a.html img_block_maxwidth_ref.html == img_block_maxwidth_b.html img_block_maxwidth_ref.html diff --git a/tests/ref/inline_block_min_width.html b/tests/ref/inline_block_min_width.html new file mode 100644 index 00000000000..c677fb21d94 --- /dev/null +++ b/tests/ref/inline_block_min_width.html @@ -0,0 +1,26 @@ + + +
+ + + + + + diff --git a/tests/ref/inline_block_min_width_ref.html b/tests/ref/inline_block_min_width_ref.html new file mode 100644 index 00000000000..d0577dd80df --- /dev/null +++ b/tests/ref/inline_block_min_width_ref.html @@ -0,0 +1,25 @@ + + + + + + + + +