1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:27:35 +00:00

LibWeb: Store clip border radii in CSSPixels instead of DevicePixels

Paintable boxes should not hold information stored in device pixels.
It should be converted from CSS pixels only by the time painting
command recording occurs.
This commit is contained in:
Aliaksandr Kalenik 2024-01-30 09:45:10 +01:00 committed by Andreas Kling
parent 41f57a5477
commit d27b376699
5 changed files with 13 additions and 10 deletions

View file

@ -95,7 +95,7 @@ void ViewportPaintable::assign_scroll_frame_ids(HashMap<Painting::PaintableBox c
});
}
void ViewportPaintable::assign_clip_rectangles(PaintContext const& context)
void ViewportPaintable::assign_clip_rectangles()
{
HashMap<Paintable const*, CSSPixelRect> 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<PaintableBox&>(paintable_box).set_corner_clip_radii(corner_radii);
const_cast<PaintableBox&>(paintable_box).set_corner_clip_radii(border_radii_data);
}
clip_rect = *containing_block_clip_rect;
break;