mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:57:35 +00:00
LibWeb: Only invalidate stacking context tree for opacity/z-index change
I came across some websites that change an elements CSS "opacity" in their :hover selectors. That caused us to relayout on hover, which we'd like to avoid. With this patch, we now check if a property only affects the stacking context tree, and if nothing layout-affecting has changed, we only invalidate the stacking context tree, causing it to be rebuilt on next paint or hit test. This makes :hover { opacity: ... } rules much faster. :^)
This commit is contained in:
parent
59afdb959f
commit
8c88ee1165
6 changed files with 54 additions and 0 deletions
|
@ -1558,4 +1558,10 @@ void Document::decrement_number_of_things_delaying_the_load_event(Badge<Document
|
|||
page->client().page_did_update_resource_count(m_number_of_things_delaying_the_load_event);
|
||||
}
|
||||
|
||||
void Document::invalidate_stacking_context_tree()
|
||||
{
|
||||
if (auto* paint_box = this->paint_box())
|
||||
const_cast<Painting::PaintableBox*>(paint_box)->invalidate_stacking_context();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue