mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #7011 - pcwalton:inline-margin-intrinsic-size, r=mbrubeck
layout: Take inline margins into account when determining the intrinsic sizes of fragments. Avoids a needless wrapped line in the repository name on GitHub. r? @mbrubeck <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7011) <!-- Reviewable:end -->
This commit is contained in:
commit
da06c2dda0
5 changed files with 49 additions and 1 deletions
|
@ -1340,8 +1340,10 @@ impl Fragment {
|
|||
let border_width = node.style.logical_border_width().inline_start_end();
|
||||
let padding_inline_size =
|
||||
model::padding_from_style(&*node.style, Au(0)).inline_start_end();
|
||||
let margin_inline_size =
|
||||
model::specified_margin_from_style(&*node.style).inline_start_end();
|
||||
result.surrounding_size = result.surrounding_size + border_width +
|
||||
padding_inline_size;
|
||||
padding_inline_size + margin_inline_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -297,6 +297,7 @@ impl IntrinsicISizes {
|
|||
}
|
||||
|
||||
/// The temporary result of the computation of intrinsic inline-sizes.
|
||||
#[derive(Debug)]
|
||||
pub struct IntrinsicISizesContribution {
|
||||
/// Intrinsic sizes for the content only (not counting borders, padding, or margins).
|
||||
pub content_intrinsic_sizes: IntrinsicISizes,
|
||||
|
@ -430,6 +431,20 @@ pub fn padding_from_style(style: &ComputedValues, containing_block_inline_size:
|
|||
specified(padding_style.padding_left, containing_block_inline_size)))
|
||||
}
|
||||
|
||||
/// Returns the explicitly-specified margin lengths from the given style. Percentage and auto
|
||||
/// margins are returned as zero.
|
||||
///
|
||||
/// This is used when calculating intrinsic inline sizes.
|
||||
#[inline]
|
||||
pub fn specified_margin_from_style(style: &ComputedValues) -> LogicalMargin<Au> {
|
||||
let margin_style = style.get_margin();
|
||||
LogicalMargin::from_physical(style.writing_mode, SideOffsets2D::new(
|
||||
MaybeAuto::from_style(margin_style.margin_top, Au(0)).specified_or_zero(),
|
||||
MaybeAuto::from_style(margin_style.margin_right, Au(0)).specified_or_zero(),
|
||||
MaybeAuto::from_style(margin_style.margin_bottom, Au(0)).specified_or_zero(),
|
||||
MaybeAuto::from_style(margin_style.margin_left, Au(0)).specified_or_zero()))
|
||||
}
|
||||
|
||||
pub trait ToGfxMatrix {
|
||||
fn to_gfx_matrix(&self) -> Matrix4;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue