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();
});
}
}