mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:27:43 +00:00
LibWeb: Shrink the inner border radii to accommodate the border widths
This fixes the shape of the subreddit logo on new reddit.
This commit is contained in:
parent
890514a057
commit
b68f48eb71
5 changed files with 16 additions and 10 deletions
|
@ -234,13 +234,16 @@ void PaintableBox::paint_box_shadow(PaintContext& context) const
|
|||
Painting::paint_box_shadow(context, absolute_border_box_rect().to_rounded<int>(), normalized_border_radii_data(), resolved_box_shadow_data);
|
||||
}
|
||||
|
||||
BorderRadiiData PaintableBox::normalized_border_radii_data() const
|
||||
BorderRadiiData PaintableBox::normalized_border_radii_data(ShrinkRadiiForBorders shrink) const
|
||||
{
|
||||
return Painting::normalized_border_radii_data(layout_box(), absolute_border_box_rect(),
|
||||
auto border_radius_data = Painting::normalized_border_radii_data(layout_box(), absolute_border_box_rect(),
|
||||
computed_values().border_top_left_radius(),
|
||||
computed_values().border_top_right_radius(),
|
||||
computed_values().border_bottom_right_radius(),
|
||||
computed_values().border_bottom_left_radius());
|
||||
if (shrink == ShrinkRadiiForBorders::Yes)
|
||||
border_radius_data.shrink(computed_values().border_top().width, computed_values().border_right().width, computed_values().border_bottom().width, computed_values().border_left().width);
|
||||
return border_radius_data;
|
||||
}
|
||||
|
||||
void PaintableBox::before_children_paint(PaintContext& context, PaintPhase phase) const
|
||||
|
@ -265,9 +268,7 @@ void PaintableBox::before_children_paint(PaintContext& context, PaintPhase phase
|
|||
clip_overflow();
|
||||
}
|
||||
if (overflow_y == CSS::Overflow::Hidden || overflow_x == CSS::Overflow::Hidden) {
|
||||
auto border_radii_data = normalized_border_radii_data();
|
||||
auto const& border = box_model().border;
|
||||
border_radii_data.shrink(border.top, border.right, border.bottom, border.left);
|
||||
auto border_radii_data = normalized_border_radii_data(ShrinkRadiiForBorders::Yes);
|
||||
if (border_radii_data.has_any_radius()) {
|
||||
auto corner_clipper = BorderRadiusCornerClipper::create(clip_rect, border_radii_data, CornerClip::Outside, BorderRadiusCornerClipper::UseCachedBitmap::No);
|
||||
if (corner_clipper.is_error()) {
|
||||
|
@ -464,7 +465,7 @@ void PaintableWithLines::paint(PaintContext& context, PaintPhase phase) const
|
|||
auto scroll_offset = static_cast<Layout::BlockContainer const&>(layout_box()).scroll_offset();
|
||||
context.painter().translate(-scroll_offset.to_type<int>());
|
||||
|
||||
auto border_radii = normalized_border_radii_data();
|
||||
auto border_radii = normalized_border_radii_data(ShrinkRadiiForBorders::Yes);
|
||||
if (border_radii.has_any_radius()) {
|
||||
auto clipper = BorderRadiusCornerClipper::create(clip_box, border_radii);
|
||||
if (!clipper.is_error()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue