mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:37:45 +00:00
LibWeb: Limit style update tree traversal to dirty subtrees
This patch adds a second style dirty bit that tracks whether a DOM node has one or more children with dirty style. This allows the style update to skip over entire subtrees where all nodes are clean.
This commit is contained in:
parent
d1479aef56
commit
6809be436b
3 changed files with 32 additions and 7 deletions
|
@ -126,7 +126,7 @@ public:
|
|||
Element* parent_element();
|
||||
const Element* parent_element() const;
|
||||
|
||||
virtual void inserted_into(Node&) { }
|
||||
virtual void inserted_into(Node&);
|
||||
virtual void removed_from(Node&) { }
|
||||
virtual void children_changed() { }
|
||||
|
||||
|
@ -140,6 +140,9 @@ public:
|
|||
bool needs_style_update() const { return m_needs_style_update; }
|
||||
void set_needs_style_update(bool);
|
||||
|
||||
bool child_needs_style_update() const { return m_child_needs_style_update; }
|
||||
void set_child_needs_style_update(bool b) { m_child_needs_style_update = b; }
|
||||
|
||||
void invalidate_style();
|
||||
|
||||
bool is_link() const;
|
||||
|
@ -157,7 +160,8 @@ protected:
|
|||
Document* m_document { nullptr };
|
||||
mutable WeakPtr<Layout::Node> m_layout_node;
|
||||
NodeType m_type { NodeType::INVALID };
|
||||
bool m_needs_style_update { true };
|
||||
bool m_needs_style_update { false };
|
||||
bool m_child_needs_style_update { false };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue