diff --git a/Libraries/LibHTML/DOM/Document.cpp b/Libraries/LibHTML/DOM/Document.cpp index 9b0cde1ad0..492b1b231a 100644 --- a/Libraries/LibHTML/DOM/Document.cpp +++ b/Libraries/LibHTML/DOM/Document.cpp @@ -153,10 +153,17 @@ URL Document::complete_url(const String& string) const void Document::layout() { - m_layout_root = create_layout_tree(style_resolver(), nullptr); + if (!m_layout_root) + m_layout_root = create_layout_tree(style_resolver(), nullptr); m_layout_root->layout(); } +void Document::invalidate_style() +{ + m_layout_root = nullptr; + invalidate_layout(); +} + void Document::invalidate_layout() { layout(); diff --git a/Libraries/LibHTML/DOM/Document.h b/Libraries/LibHTML/DOM/Document.h index 0566298b59..148d577417 100644 --- a/Libraries/LibHTML/DOM/Document.h +++ b/Libraries/LibHTML/DOM/Document.h @@ -67,6 +67,7 @@ public: void layout(); + void invalidate_style(); void invalidate_layout(); Function on_invalidate_layout; diff --git a/Libraries/LibHTML/DOM/HTMLLinkElement.cpp b/Libraries/LibHTML/DOM/HTMLLinkElement.cpp index 94a955731f..194427ae6f 100644 --- a/Libraries/LibHTML/DOM/HTMLLinkElement.cpp +++ b/Libraries/LibHTML/DOM/HTMLLinkElement.cpp @@ -29,7 +29,7 @@ void HTMLLinkElement::inserted_into(Node&) return; } document().add_sheet(*sheet); - document().invalidate_layout(); + document().invalidate_style(); }); } }