From b12cebd1ac3b2bc809e5ac69f708cf61b515590d Mon Sep 17 00:00:00 2001 From: Oriol Brufau Date: Mon, 16 Sep 2024 10:20:22 +0200 Subject: Small improvements for table border collapse (#33452) We were only collapsing the borders from adjacent cells. This patch also handles the borders from rows, row groups, columns, and column groups. Additionally, it takes the border style into account in order to decide which border wins. Signed-off-by: Oriol Brufau --- components/layout_2020/style_ext.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'components/layout_2020/style_ext.rs') diff --git a/components/layout_2020/style_ext.rs b/components/layout_2020/style_ext.rs index 53bf9e6df33..21283395789 100644 --- a/components/layout_2020/style_ext.rs +++ b/components/layout_2020/style_ext.rs @@ -16,7 +16,9 @@ use style::properties::ComputedValues; use style::servo::selector_parser::PseudoElement; use style::values::computed::basic_shape::ClipPath; use style::values::computed::image::Image as ComputedImageLayer; -use style::values::computed::{AlignItems, LengthPercentage, NonNegativeLengthPercentage, Size}; +use style::values::computed::{ + AlignItems, BorderStyle, LengthPercentage, NonNegativeLengthPercentage, Size, +}; use style::values::generics::box_::Perspective; use style::values::generics::length::MaxSize; use style::values::generics::position::{GenericAspectRatio, PreferredRatio}; @@ -250,6 +252,8 @@ pub(crate) trait ComputedValuesExt { &self, containing_block_writing_mode: WritingMode, ) -> LogicalSides<&LengthPercentage>; + fn border_style(&self, containing_block_writing_mode: WritingMode) + -> LogicalSides; fn border_width(&self, containing_block_writing_mode: WritingMode) -> LogicalSides; fn margin( &self, @@ -553,6 +557,22 @@ impl ComputedValuesExt for ComputedValues { ) } + fn border_style( + &self, + containing_block_writing_mode: WritingMode, + ) -> LogicalSides { + let border = self.get_border(); + LogicalSides::from_physical( + &PhysicalSides::new( + border.border_top_style, + border.border_right_style, + border.border_bottom_style, + border.border_left_style, + ), + containing_block_writing_mode, + ) + } + fn border_width(&self, containing_block_writing_mode: WritingMode) -> LogicalSides { let border = self.get_border(); LogicalSides::from_physical( -- cgit v1.2.3