LibWeb: Simplify ViewportPaintable::refresh_clip_state()
Removes code that accounts for clip frame's own overflow clip, because it happens anyway on a first iteration of a loop through containing blocks chain.
This commit is contained in:
parent
f9f39477a4
commit
9c13644cde
Notes:
github-actions[bot]
2024-08-14 19:05:36 +00:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/LadybirdBrowser/ladybird/commit/9c13644cde5 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1075
1 changed files with 13 additions and 23 deletions
|
@ -168,29 +168,19 @@ void ViewportPaintable::refresh_clip_state()
|
|||
|
||||
clip_frame.clear_rects();
|
||||
|
||||
auto overflow_x = paintable_box.computed_values().overflow_x();
|
||||
auto overflow_y = paintable_box.computed_values().overflow_y();
|
||||
if (auto clip_rect = paintable_box.get_clip_rect(); clip_rect.has_value()) {
|
||||
clip_frame.add_clip_rect(clip_rect.value(), {}, paintable_box.enclosing_scroll_frame());
|
||||
}
|
||||
|
||||
if (overflow_x != CSS::Overflow::Visible && overflow_y != CSS::Overflow::Visible) {
|
||||
auto overflow_clip_rect = paintable_box.absolute_padding_box_rect();
|
||||
clip_frame.add_clip_rect(overflow_clip_rect, paintable_box.normalized_border_radii_data(ShrinkRadiiForBorders::Yes), paintable_box.enclosing_scroll_frame());
|
||||
for (auto const* block = &paintable_box.layout_box(); !block->is_viewport(); block = block->containing_block()) {
|
||||
auto const& block_paintable_box = *block->paintable_box();
|
||||
auto block_overflow_x = block_paintable_box.computed_values().overflow_x();
|
||||
auto block_overflow_y = block_paintable_box.computed_values().overflow_y();
|
||||
if (block_overflow_x != CSS::Overflow::Visible && block_overflow_y != CSS::Overflow::Visible) {
|
||||
auto rect = block_paintable_box.absolute_padding_box_rect();
|
||||
clip_frame.add_clip_rect(rect, block_paintable_box.normalized_border_radii_data(ShrinkRadiiForBorders::Yes), block_paintable_box.enclosing_scroll_frame());
|
||||
}
|
||||
if (auto css_clip_property_rect = block->paintable_box()->get_clip_rect(); css_clip_property_rect.has_value()) {
|
||||
clip_frame.add_clip_rect(css_clip_property_rect.value(), {}, block_paintable_box.enclosing_scroll_frame());
|
||||
}
|
||||
if (block->has_css_transform()) {
|
||||
break;
|
||||
}
|
||||
for (auto const* block = &paintable_box.layout_box(); !block->is_viewport(); block = block->containing_block()) {
|
||||
auto const& block_paintable_box = *block->paintable_box();
|
||||
auto block_overflow_x = block_paintable_box.computed_values().overflow_x();
|
||||
auto block_overflow_y = block_paintable_box.computed_values().overflow_y();
|
||||
if (block_overflow_x != CSS::Overflow::Visible && block_overflow_y != CSS::Overflow::Visible) {
|
||||
auto rect = block_paintable_box.absolute_padding_box_rect();
|
||||
clip_frame.add_clip_rect(rect, block_paintable_box.normalized_border_radii_data(ShrinkRadiiForBorders::Yes), block_paintable_box.enclosing_scroll_frame());
|
||||
}
|
||||
if (auto css_clip_property_rect = block->paintable_box()->get_clip_rect(); css_clip_property_rect.has_value()) {
|
||||
clip_frame.add_clip_rect(css_clip_property_rect.value(), {}, block_paintable_box.enclosing_scroll_frame());
|
||||
}
|
||||
if (block->has_css_transform()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue