diff --git a/Userland/Libraries/LibWeb/HTML/Navigable.cpp b/Userland/Libraries/LibWeb/HTML/Navigable.cpp
index 7f66f140ee..8f8bec3af0 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigable.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Navigable.cpp
@@ -2085,7 +2085,7 @@ void Navigable::paint(Painting::RecordingPainter& recording_painter, PaintConfig
HashMap scroll_frames;
if (is_traversable()) {
document->paintable()->assign_scroll_frame_ids(scroll_frames);
- document->paintable()->assign_clip_rectangles(context);
+ document->paintable()->assign_clip_rectangles();
}
document->paintable()->paint_all_phases(context);
diff --git a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp
index 1f691acd5c..eb2f4f5456 100644
--- a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp
+++ b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp
@@ -412,7 +412,9 @@ void PaintableBox::apply_clip_overflow_rect(PaintContext& context, PaintPhase ph
if (m_corner_clip_radii.has_value()) {
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, *m_corner_clip_radii, context.rounded_device_rect(overflow_clip_rect).to_type(), CornerClip::Outside);
+ auto corner_radii = m_corner_clip_radii->as_corners(context);
+ if (corner_radii.has_any_radius())
+ context.recording_painter().sample_under_corners(*m_corner_clipper_id, m_corner_clip_radii->as_corners(context), context.rounded_device_rect(overflow_clip_rect).to_type(), CornerClip::Outside);
}
}
}
@@ -426,7 +428,9 @@ void PaintableBox::clear_clip_overflow_rect(PaintContext& context, PaintPhase ph
m_clipping_overflow = false;
if (m_corner_clip_radii.has_value()) {
VERIFY(m_corner_clipper_id.has_value());
- context.recording_painter().blit_corner_clipping(*m_corner_clipper_id, context.rounded_device_rect(*m_clip_rect).to_type());
+ auto corner_radii = m_corner_clip_radii->as_corners(context);
+ if (corner_radii.has_any_radius())
+ context.recording_painter().blit_corner_clipping(*m_corner_clipper_id, context.rounded_device_rect(*m_clip_rect).to_type());
m_corner_clipper_id = {};
}
context.recording_painter().restore();
diff --git a/Userland/Libraries/LibWeb/Painting/PaintableBox.h b/Userland/Libraries/LibWeb/Painting/PaintableBox.h
index f84c939724..b9dc4b2cb9 100644
--- a/Userland/Libraries/LibWeb/Painting/PaintableBox.h
+++ b/Userland/Libraries/LibWeb/Painting/PaintableBox.h
@@ -196,7 +196,7 @@ public:
void set_clip_rect(Optional rect) { m_clip_rect = rect; }
void set_scroll_frame_id(int id) { m_scroll_frame_id = id; }
void set_enclosing_scroll_frame_offset(CSSPixelPoint offset) { m_enclosing_scroll_frame_offset = offset; }
- void set_corner_clip_radii(CornerRadii const& corner_radii) { m_corner_clip_radii = corner_radii; }
+ void set_corner_clip_radii(BorderRadiiData const& corner_radii) { m_corner_clip_radii = corner_radii; }
protected:
explicit PaintableBox(Layout::Box const&);
@@ -228,7 +228,7 @@ private:
Optional m_clip_rect;
Optional m_scroll_frame_id;
Optional m_enclosing_scroll_frame_offset;
- Optional m_corner_clip_radii;
+ Optional m_corner_clip_radii;
Optional m_override_borders_data;
Optional m_table_cell_coordinates;
diff --git a/Userland/Libraries/LibWeb/Painting/ViewportPaintable.cpp b/Userland/Libraries/LibWeb/Painting/ViewportPaintable.cpp
index 5c234e79f1..c7bd5df984 100644
--- a/Userland/Libraries/LibWeb/Painting/ViewportPaintable.cpp
+++ b/Userland/Libraries/LibWeb/Painting/ViewportPaintable.cpp
@@ -95,7 +95,7 @@ void ViewportPaintable::assign_scroll_frame_ids(HashMap clip_rects;
// Calculate clip rects for all boxes that either have hidden overflow or a CSS clip property.
@@ -129,10 +129,9 @@ void ViewportPaintable::assign_clip_rectangles(PaintContext const& context)
for (auto block = paintable_box.containing_block(); block; block = block->containing_block()) {
if (auto containing_block_clip_rect = clip_rects.get(block->paintable()); containing_block_clip_rect.has_value()) {
auto border_radii_data = block->paintable_box()->normalized_border_radii_data(ShrinkRadiiForBorders::Yes);
- CornerRadii corner_radii = border_radii_data.as_corners(context);
- if (corner_radii.has_any_radius()) {
+ if (border_radii_data.has_any_radius()) {
// FIXME: Border radii of all boxes in containing block chain should be taken into account instead of just the closest one.
- const_cast(paintable_box).set_corner_clip_radii(corner_radii);
+ const_cast(paintable_box).set_corner_clip_radii(border_radii_data);
}
clip_rect = *containing_block_clip_rect;
break;
diff --git a/Userland/Libraries/LibWeb/Painting/ViewportPaintable.h b/Userland/Libraries/LibWeb/Painting/ViewportPaintable.h
index 96b0f30c28..53d10ab12f 100644
--- a/Userland/Libraries/LibWeb/Painting/ViewportPaintable.h
+++ b/Userland/Libraries/LibWeb/Painting/ViewportPaintable.h
@@ -25,7 +25,7 @@ public:
CSSPixelPoint offset;
};
void assign_scroll_frame_ids(HashMap&) const;
- void assign_clip_rectangles(PaintContext const&);
+ void assign_clip_rectangles();
private:
void build_stacking_context_tree();