From 232df236a7b95b2d8ae7d7d271fab2c45b4c7ae4 Mon Sep 17 00:00:00 2001 From: Daniel Alley Date: Fri, 17 Apr 2020 15:05:52 -0400 Subject: [PATCH] Fix combination of border and border-radius being drawn incorrectly fixes #20922 --- components/layout/display_list/builder.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 2c0f6d612e1..e4d20d48de7 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -1733,8 +1733,18 @@ impl Fragment { build_border_radius_for_inner_rect(stacking_relative_border_box, &self.style); if !radii.is_zero() { - let clip_id = - state.add_late_clip_node(stacking_relative_border_box.to_layout(), radii); + // This is already calculated inside of build_border_radius_for_inner_rect(), it would be + // nice if it were only calculated once. + let border_widths = self + .style + .logical_border_width() + .to_physical(self.style.writing_mode); + let clip_id = state.add_late_clip_node( + stacking_relative_border_box + .inner_rect(border_widths) + .to_layout(), + radii, + ); state.current_clipping_and_scrolling = ClippingAndScrolling::simple(clip_id); }