LibWeb: Use PaintContext::would_be_fully_clipped_by_painter() everywhere

Always use `would_be_fully_clipped_by_painter` to check if painting can
be skipped.

This allows to quickly find all the places where this check happens and
also removes incosistency that before we checked for intersection with
viewport rect in some places and for intersection with painter clip
rect in other places.
This commit is contained in:
Aliaksandr Kalenik 2023-06-19 22:33:08 +03:00 committed by Andreas Kling
parent cee1f9ba5d
commit b37fbcb159
Notes: sideshowbarker 2024-07-16 22:26:05 +09:00
2 changed files with 2 additions and 5 deletions

View file

@ -316,7 +316,7 @@ void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMet
while (image_x < css_clip_rect.right()) {
image_rect.set_x(image_x);
auto image_device_rect = context.rounded_device_rect(image_rect);
if (image_device_rect != last_image_device_rect && image_device_rect.intersects(context.device_viewport_rect()))
if (image_device_rect != last_image_device_rect && !context.would_be_fully_clipped_by_painter(image_device_rect))
image.paint(context, image_device_rect, image_rendering);
last_image_device_rect = image_device_rect;
if (!repeat_x)

View file

@ -45,10 +45,7 @@ void PaintableBox::invalidate_stacking_context()
bool PaintableBox::is_out_of_view(PaintContext& context) const
{
return !context.enclosing_device_rect(absolute_paint_rect())
.to_type<int>()
.translated(context.painter().translation())
.intersects(context.painter().clip_rect());
return context.would_be_fully_clipped_by_painter(context.enclosing_device_rect(absolute_paint_rect()));
}
PaintableWithLines::PaintableWithLines(Layout::BlockContainer const& layout_box)