mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 03:37:34 +00:00
LibWeb: Make Paintable::containing_block() return a PaintableBox*
Every single client of this function was immediately calling paintable() on the result anyway, so there was no need to return a layout node! This automatically leverages the cached containing block pointer we already have in Paintable, which melts away a bunch of unnecessary traversal in hit testing and painting. :^)
This commit is contained in:
parent
c3980eda9e
commit
d1b5f55f91
9 changed files with 32 additions and 36 deletions
|
@ -923,13 +923,8 @@ JS::NonnullGCPtr<Geometry::DOMRectList> Element::get_client_rects() const
|
|||
}
|
||||
|
||||
Gfx::AffineTransform transform;
|
||||
for (auto const* containing_block = this->layout_node(); containing_block; containing_block = containing_block->containing_block()) {
|
||||
Gfx::AffineTransform containing_block_transform;
|
||||
if (containing_block->paintable() && containing_block->paintable()->is_paintable_box()) {
|
||||
auto const& containing_block_paintable_box = static_cast<Painting::PaintableBox const&>(*containing_block->paintable());
|
||||
containing_block_transform = Gfx::extract_2d_affine_transform(containing_block_paintable_box.transform());
|
||||
}
|
||||
transform = transform.multiply(containing_block_transform);
|
||||
for (auto const* containing_block = this->paintable_box(); containing_block; containing_block = containing_block->containing_block()) {
|
||||
transform = transform.multiply(Gfx::extract_2d_affine_transform(containing_block->transform()));
|
||||
}
|
||||
|
||||
auto const* paintable = this->paintable();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue