diff options
author | Andreas Kling <kling@serenityos.org> | 2022-03-09 17:51:02 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-03-09 18:14:24 +0100 |
commit | 04311ca7f115a33aa9891b7146407ed8fee3b726 (patch) | |
tree | c02eb657a25a6a827a7441230e86c4f9c64abef3 | |
parent | 3259b17a6abde8d4ded55fdd41818f5db64bc1a3 (diff) | |
download | serenity-04311ca7f115a33aa9891b7146407ed8fee3b726.zip |
LibWeb: Flush pending layouts when accessing element resolved style
We were handing out stale values from window.getComputedStyle() objects
after the first layout.
Fix this by always updating layout on property access. This is not
necessary for all properties, but for now let's go with the simplest
approach to make it work correctly.
-rw-r--r-- | Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp index 88b255fb65..296bc7ab6e 100644 --- a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp +++ b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp @@ -772,7 +772,8 @@ RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout: Optional<StyleProperty> ResolvedCSSStyleDeclaration::property(PropertyID property_id) const { - const_cast<DOM::Document&>(m_element->document()).ensure_layout(); + // FIXME: Only update layout if required to resolve the property we're accessing. + const_cast<DOM::Document&>(m_element->document()).update_layout(); if (!m_element->layout_node()) { auto style = m_element->document().style_computer().compute_style(const_cast<DOM::Element&>(*m_element)); |