diff options
author | Oriol Brufau <obrufau@igalia.com> | 2024-10-20 21:53:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-20 19:53:38 +0000 |
commit | c75f6627ba0e314d5fb4c4c9230e93cbb1b188e3 (patch) | |
tree | e6ebec7e4fa425f36b02d89587020012ff7a05ee /components/layout | |
parent | 65c866285f69d4c26ae46e604bcc05dda1641df7 (diff) | |
download | servo-c75f6627ba0e314d5fb4c4c9230e93cbb1b188e3.tar.gz servo-c75f6627ba0e314d5fb4c4c9230e93cbb1b188e3.zip |
Upgrade Stylo to 2024-10-04 (#33767)
* Upgrade Stylo to 2024-10-04
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://phabricator.services.mozilla.com/D220285
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://bugzilla.mozilla.org/show_bug.cgi?id=1918093
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://phabricator.services.mozilla.com/D222817
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://phabricator.services.mozilla.com/D222856
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://phabricator.services.mozilla.com/D222532
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://phabricator.services.mozilla.com/D222533
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://phabricator.services.mozilla.com/D222534
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Fixup for https://phabricator.services.mozilla.com/D223878
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
---------
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Diffstat (limited to 'components/layout')
-rw-r--r-- | components/layout/block.rs | 34 | ||||
-rw-r--r-- | components/layout/flex.rs | 4 | ||||
-rw-r--r-- | components/layout/fragment.rs | 30 | ||||
-rw-r--r-- | components/layout/model.rs | 33 |
4 files changed, 62 insertions, 39 deletions
diff --git a/components/layout/block.rs b/components/layout/block.rs index bceb82b572d..31f6acd243c 100644 --- a/components/layout/block.rs +++ b/components/layout/block.rs @@ -46,7 +46,7 @@ use style::context::SharedStyleContext; use style::logical_geometry::{LogicalMargin, LogicalPoint, LogicalRect, LogicalSize, WritingMode}; use style::properties::ComputedValues; use style::servo::restyle_damage::ServoRestyleDamage; -use style::values::computed::{LengthPercentageOrAuto, MaxSize, Size}; +use style::values::computed::{Margin, MaxSize, Size}; use crate::context::LayoutContext; use crate::display_list::items::DisplayListSection; @@ -1408,8 +1408,8 @@ impl BlockFlow { let (block_start, block_end) = { let position = self.fragment.style().logical_position(); ( - MaybeAuto::from_style(position.block_start, container_size), - MaybeAuto::from_style(position.block_end, container_size), + MaybeAuto::from_inset(position.block_start, container_size), + MaybeAuto::from_inset(position.block_end, container_size), ) }; @@ -1422,11 +1422,11 @@ impl BlockFlow { // calculated during assign-inline-size. let margin = self.fragment.style().logical_margin(); let margin_block_start = match margin.block_start { - LengthPercentageOrAuto::Auto => MaybeAuto::Auto, + Margin::Auto => MaybeAuto::Auto, _ => MaybeAuto::Specified(self.fragment.margin.block_start), }; let margin_block_end = match margin.block_end { - LengthPercentageOrAuto::Auto => MaybeAuto::Auto, + Margin::Auto => MaybeAuto::Auto, _ => MaybeAuto::Specified(self.fragment.margin.block_end), }; @@ -1456,11 +1456,11 @@ impl BlockFlow { // calculated during assign-inline-size. let margin = self.fragment.style().logical_margin(); let margin_block_start = match margin.block_start { - LengthPercentageOrAuto::Auto => MaybeAuto::Auto, + Margin::Auto => MaybeAuto::Auto, _ => MaybeAuto::Specified(self.fragment.margin.block_start), }; let margin_block_end = match margin.block_end { - LengthPercentageOrAuto::Auto => MaybeAuto::Auto, + Margin::Auto => MaybeAuto::Auto, _ => MaybeAuto::Specified(self.fragment.margin.block_end), }; @@ -1469,8 +1469,8 @@ impl BlockFlow { { let position = self.fragment.style().logical_position(); block_start = - MaybeAuto::from_style(position.block_start, containing_block_block_size); - block_end = MaybeAuto::from_style(position.block_end, containing_block_block_size); + MaybeAuto::from_inset(position.block_start, containing_block_block_size); + block_end = MaybeAuto::from_inset(position.block_end, containing_block_block_size); } let available_block_size = @@ -2117,10 +2117,10 @@ impl BlockFlow { let offsets = self.fragment.style().logical_position(); let as_margins = LogicalMargin::new( writing_mode, - MaybeAuto::from_style(offsets.block_start, containing_block_size.inline), - MaybeAuto::from_style(offsets.inline_end, containing_block_size.inline), - MaybeAuto::from_style(offsets.block_end, containing_block_size.inline), - MaybeAuto::from_style(offsets.inline_start, containing_block_size.inline), + MaybeAuto::from_inset(offsets.block_start, containing_block_size.inline), + MaybeAuto::from_inset(offsets.inline_end, containing_block_size.inline), + MaybeAuto::from_inset(offsets.block_end, containing_block_size.inline), + MaybeAuto::from_inset(offsets.inline_start, containing_block_size.inline), ); as_margins.to_physical(writing_mode) } @@ -2789,10 +2789,10 @@ pub trait ISizeAndMarginsComputer { containing_block_inline_size - block.fragment.border_padding.inline_start_end(); ISizeConstraintInput::new( computed_inline_size, - MaybeAuto::from_style(margin.inline_start, containing_block_inline_size), - MaybeAuto::from_style(margin.inline_end, containing_block_inline_size), - MaybeAuto::from_style(position.inline_start, containing_block_inline_size), - MaybeAuto::from_style(position.inline_end, containing_block_inline_size), + MaybeAuto::from_margin(margin.inline_start, containing_block_inline_size), + MaybeAuto::from_margin(margin.inline_end, containing_block_inline_size), + MaybeAuto::from_inset(position.inline_start, containing_block_inline_size), + MaybeAuto::from_inset(position.inline_end, containing_block_inline_size), available_inline_size, ) } diff --git a/components/layout/flex.rs b/components/layout/flex.rs index f2aa96a0ec9..87408ad66f1 100644 --- a/components/layout/flex.rs +++ b/components/layout/flex.rs @@ -671,9 +671,9 @@ impl FlexFlow { } else { line.free_space / line.auto_margin_count }; - let margin_inline_start = MaybeAuto::from_style(margin.inline_start, inline_size) + let margin_inline_start = MaybeAuto::from_margin(margin.inline_start, inline_size) .specified_or_default(auto_len); - let margin_inline_end = MaybeAuto::from_style(margin.inline_end, inline_size) + let margin_inline_end = MaybeAuto::from_margin(margin.inline_end, inline_size) .specified_or_default(auto_len); let item_inline_size = item.main_size - block.fragment.box_sizing_boundary(self.main_mode) + diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 1cb25cefc7a..01004e47438 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -962,8 +962,8 @@ impl Fragment { QuantitiesIncludedInIntrinsicInlineSizes::INTRINSIC_INLINE_SIZE_INCLUDES_MARGINS, ) { let margin = style.logical_margin(); - MaybeAuto::from_style(margin.inline_start, Au(0)).specified_or_zero() + - MaybeAuto::from_style(margin.inline_end, Au(0)).specified_or_zero() + MaybeAuto::from_margin(margin.inline_start, Au(0)).specified_or_zero() + + MaybeAuto::from_margin(margin.inline_end, Au(0)).specified_or_zero() } else { Au(0) }; @@ -1274,10 +1274,10 @@ impl Fragment { let logical_padding = self.style.logical_padding(); let border_width = self.border_width(); SpeculatedInlineContentEdgeOffsets { - start: MaybeAuto::from_style(logical_margin.inline_start, Au(0)).specified_or_zero() + + start: MaybeAuto::from_margin(logical_margin.inline_start, Au(0)).specified_or_zero() + logical_padding.inline_start.to_used_value(Au(0)) + border_width.inline_start, - end: MaybeAuto::from_style(logical_margin.inline_end, Au(0)).specified_or_zero() + + end: MaybeAuto::from_margin(logical_margin.inline_end, Au(0)).specified_or_zero() + logical_padding.inline_end.to_used_value(Au(0)) + border_width.inline_end, } @@ -1349,9 +1349,9 @@ impl Fragment { let (inline_start, inline_end) = { let margin = self.style().logical_margin(); ( - MaybeAuto::from_style(margin.inline_start, containing_block_inline_size) + MaybeAuto::from_margin(margin.inline_start, containing_block_inline_size) .specified_or_zero(), - MaybeAuto::from_style(margin.inline_end, containing_block_inline_size) + MaybeAuto::from_margin(margin.inline_end, containing_block_inline_size) .specified_or_zero(), ) }; @@ -1369,7 +1369,7 @@ impl Fragment { { Au(0) } else { - MaybeAuto::from_style(margin.inline_start, containing_block_inline_size) + MaybeAuto::from_margin(margin.inline_start, containing_block_inline_size) .specified_or_zero() }; let this_inline_end_margin = if !node @@ -1378,7 +1378,7 @@ impl Fragment { { Au(0) } else { - MaybeAuto::from_style(margin.inline_end, containing_block_inline_size) + MaybeAuto::from_margin(margin.inline_end, containing_block_inline_size) .specified_or_zero() }; @@ -1408,9 +1408,9 @@ impl Fragment { let (block_start, block_end) = { let margin = self.style().logical_margin(); ( - MaybeAuto::from_style(margin.block_start, containing_block_inline_size) + MaybeAuto::from_margin(margin.block_start, containing_block_inline_size) .specified_or_zero(), - MaybeAuto::from_style(margin.block_end, containing_block_inline_size) + MaybeAuto::from_margin(margin.block_end, containing_block_inline_size) .specified_or_zero(), ) }; @@ -1484,16 +1484,16 @@ impl Fragment { fn from_style(style: &ComputedValues, container_size: &LogicalSize<Au>) -> LogicalSize<Au> { let offsets = style.logical_position(); let offset_i = if !offsets.inline_start.is_auto() { - MaybeAuto::from_style(offsets.inline_start, container_size.inline) + MaybeAuto::from_inset(offsets.inline_start, container_size.inline) .specified_or_zero() } else { - -MaybeAuto::from_style(offsets.inline_end, container_size.inline) + -MaybeAuto::from_inset(offsets.inline_end, container_size.inline) .specified_or_zero() }; - let offset_b = if !offsets.block_start.is_auto() { - MaybeAuto::from_style(offsets.block_start, container_size.block).specified_or_zero() + let offset_b = if offsets.block_start.is_auto() { + MaybeAuto::from_inset(offsets.block_start, container_size.block).specified_or_zero() } else { - -MaybeAuto::from_style(offsets.block_end, container_size.block).specified_or_zero() + -MaybeAuto::from_inset(offsets.block_end, container_size.block).specified_or_zero() }; LogicalSize::new(style.writing_mode, offset_i, offset_b) } diff --git a/components/layout/model.rs b/components/layout/model.rs index 83b3e3a8879..9aadc7083f8 100644 --- a/components/layout/model.rs +++ b/components/layout/model.rs @@ -12,7 +12,7 @@ use euclid::SideOffsets2D; use serde::Serialize; use style::logical_geometry::{LogicalMargin, WritingMode}; use style::properties::ComputedValues; -use style::values::computed::{LengthPercentageOrAuto, MaxSize, Size}; +use style::values::computed::{Inset, LengthPercentageOrAuto, Margin, MaxSize, Size}; use crate::fragment::Fragment; @@ -468,6 +468,29 @@ impl MaybeAuto { } #[inline] + pub fn from_inset(length: &Inset, containing_length: Au) -> MaybeAuto { + match length { + Inset::Auto => MaybeAuto::Auto, + Inset::LengthPercentage(ref lp) => { + MaybeAuto::Specified(lp.to_used_value(containing_length)) + }, + Inset::AnchorFunction(_) => unreachable!("anchor() should be disabled"), + Inset::AnchorSizeFunction(_) => unreachable!("anchor-size() should be disabled"), + } + } + + #[inline] + pub fn from_margin(length: &Margin, containing_length: Au) -> MaybeAuto { + match length { + Margin::Auto => MaybeAuto::Auto, + Margin::LengthPercentage(ref lp) => { + MaybeAuto::Specified(lp.to_used_value(containing_length)) + }, + Margin::AnchorSizeFunction(_) => unreachable!("anchor-size() should be disabled"), + } + } + + #[inline] pub fn from_option(au: Option<Au>) -> MaybeAuto { match au { Some(l) => MaybeAuto::Specified(l), @@ -562,10 +585,10 @@ pub fn specified_margin_from_style( LogicalMargin::from_physical( 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(), + MaybeAuto::from_margin(&margin_style.margin_top, Au(0)).specified_or_zero(), + MaybeAuto::from_margin(&margin_style.margin_right, Au(0)).specified_or_zero(), + MaybeAuto::from_margin(&margin_style.margin_bottom, Au(0)).specified_or_zero(), + MaybeAuto::from_margin(&margin_style.margin_left, Au(0)).specified_or_zero(), ), ) } |