aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/layout/fragment.rs30
1 files changed, 17 insertions, 13 deletions
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(_) => {