mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 18:08:12 +00:00
LibWeb: Cache width of "alt" text in ImageBox
We were constantly measuring and re-measuring the "alt" attribute text of ImageBox layout nodes, even when the alt text didn't change. By caching this, we avoid a *lot* of repeated text measurement work.
This commit is contained in:
parent
514fa83708
commit
faf9746244
3 changed files with 21 additions and 1 deletions
|
@ -59,7 +59,13 @@ void ImageBox::prepare_for_replaced_layout()
|
|||
auto alt = image_element.alt();
|
||||
if (alt.is_empty())
|
||||
alt = image_element.src();
|
||||
set_intrinsic_width(font.width(alt) + 16);
|
||||
|
||||
float alt_text_width = 0;
|
||||
if (!m_cached_alt_text_width.has_value())
|
||||
m_cached_alt_text_width = font.width(alt);
|
||||
alt_text_width = m_cached_alt_text_width.value();
|
||||
|
||||
set_intrinsic_width(alt_text_width + 16);
|
||||
set_intrinsic_height(font.pixel_size() + 16);
|
||||
}
|
||||
|
||||
|
@ -68,6 +74,11 @@ void ImageBox::prepare_for_replaced_layout()
|
|||
}
|
||||
}
|
||||
|
||||
void ImageBox::dom_node_did_update_alt_text(Badge<HTML::HTMLImageElement>)
|
||||
{
|
||||
m_cached_alt_text_width = {};
|
||||
}
|
||||
|
||||
bool ImageBox::renders_as_alt_text() const
|
||||
{
|
||||
if (is<HTML::HTMLImageElement>(dom_node()))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue