diff --git a/Tests/LibWeb/Layout/expected/misc/corner-radius.txt b/Tests/LibWeb/Layout/expected/misc/corner-radius.txt new file mode 100644 index 0000000000..a4cbac455a --- /dev/null +++ b/Tests/LibWeb/Layout/expected/misc/corner-radius.txt @@ -0,0 +1,12 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x48 [BFC] children: not-inline + BlockContainer at (8,8) content-size 1x32 children: not-inline + BlockContainer
at (8,8) content-size 1x32 [BFC] children: inline + frag 0 from ImageBox start: 0, length: 0, rect: [8,8 16x32] baseline: 32 + ImageBox at (8,8) content-size 16x32 children: not-inline + +ViewportPaintable (Viewport<#document>) [0,0 800x600] + PaintableWithLines (BlockContainer) [0,0 800x48] + PaintableWithLines (BlockContainer) [8,8 1x32] + PaintableWithLines (BlockContainer
) [8,8 1x32] overflow: [8,8 16x32] + ImagePaintable (ImageBox) [8,8 16x32] diff --git a/Tests/LibWeb/Layout/input/misc/corner-radius.html b/Tests/LibWeb/Layout/input/misc/corner-radius.html new file mode 100644 index 0000000000..a54710e77e --- /dev/null +++ b/Tests/LibWeb/Layout/input/misc/corner-radius.html @@ -0,0 +1,10 @@ +
\ No newline at end of file diff --git a/Userland/Libraries/LibWeb/Painting/BorderRadiusCornerClipper.cpp b/Userland/Libraries/LibWeb/Painting/BorderRadiusCornerClipper.cpp index 4f1f3c99e1..3194c64267 100644 --- a/Userland/Libraries/LibWeb/Painting/BorderRadiusCornerClipper.cpp +++ b/Userland/Libraries/LibWeb/Painting/BorderRadiusCornerClipper.cpp @@ -111,17 +111,17 @@ void BorderRadiusCornerClipper::blit_corner_clipping(Gfx::Painter& painter) ScopedCornerRadiusClip::ScopedCornerRadiusClip(PaintContext& context, DevicePixelRect const& border_rect, BorderRadiiData const& border_radii, CornerClip corner_clip) : m_context(context) , m_id(context.allocate_corner_clipper_id()) - , m_has_radius(border_radii.has_any_radius()) , m_border_rect(border_rect) { - if (!m_has_radius) - return; CornerRadii const corner_radii { .top_left = border_radii.top_left.as_corner(context), .top_right = border_radii.top_right.as_corner(context), .bottom_right = border_radii.bottom_right.as_corner(context), .bottom_left = border_radii.bottom_left.as_corner(context) }; + m_has_radius = corner_radii.has_any_radius(); + if (!m_has_radius) + return; m_context.recording_painter().sample_under_corners(m_id, corner_radii, border_rect.to_type(), corner_clip); } diff --git a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp index 29707cb8b6..aba7806b84 100644 --- a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp +++ b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp @@ -438,7 +438,7 @@ void PaintableBox::apply_clip_overflow_rect(PaintContext& context, PaintPhase ph .bottom_right = border_radii_data.bottom_right.as_corner(context), .bottom_left = border_radii_data.bottom_left.as_corner(context) }; - if (border_radii_data.has_any_radius()) { + if (corner_radii.has_any_radius()) { VERIFY(!m_corner_clipper_id.has_value()); m_corner_clipper_id = context.allocate_corner_clipper_id(); context.recording_painter().sample_under_corners(*m_corner_clipper_id, corner_radii, context.rounded_device_rect(*clip_rect).to_type(), CornerClip::Outside); @@ -648,7 +648,7 @@ void PaintableWithLines::paint(PaintContext& context, PaintPhase phase) const .bottom_right = border_radii.bottom_right.as_corner(context), .bottom_left = border_radii.bottom_left.as_corner(context) }; - if (border_radii.has_any_radius()) { + if (corner_radii.has_any_radius()) { corner_clip_id = context.allocate_corner_clipper_id(); context.recording_painter().sample_under_corners(*corner_clip_id, corner_radii, clip_box.to_type(), CornerClip::Outside); }