summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/DOM
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2022-03-20 16:31:40 +0100
committerAndreas Kling <kling@serenityos.org>2022-03-20 16:31:40 +0100
commit2b7775118d1d3044ecd61c892606e81ec1c5bc1f (patch)
tree0dfe3cb8f58b25a628e97a3fab5127f88515cf81 /Userland/Libraries/LibWeb/DOM
parent485ef276bd576aa01f83b006cee84a1367c4b7bc (diff)
downloadserenity-2b7775118d1d3044ecd61c892606e81ec1c5bc1f.zip
LibWeb: Clear element.style when the "style" attribute is removed
We were hanging on to element inline style, even after the style attribute was removed. This made inline style sticky and impossible to remove. This patch fixes that. :^)
Diffstat (limited to 'Userland/Libraries/LibWeb/DOM')
-rw-r--r--Userland/Libraries/LibWeb/DOM/Element.cpp10
-rw-r--r--Userland/Libraries/LibWeb/DOM/Element.h2
2 files changed, 11 insertions, 1 deletions
diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp
index b0c2f6d996..e562c1db1c 100644
--- a/Userland/Libraries/LibWeb/DOM/Element.cpp
+++ b/Userland/Libraries/LibWeb/DOM/Element.cpp
@@ -265,6 +265,16 @@ void Element::parse_attribute(const FlyString& name, const String& value)
}
}
+void Element::did_remove_attribute(FlyString const& name)
+{
+ if (name == HTML::AttributeNames::style) {
+ if (m_inline_style) {
+ m_inline_style = nullptr;
+ set_needs_style_update(true);
+ }
+ }
+}
+
enum class RequiredInvalidation {
None,
RepaintOnly,
diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h
index 5747d7b9c1..f7d3047d70 100644
--- a/Userland/Libraries/LibWeb/DOM/Element.h
+++ b/Userland/Libraries/LibWeb/DOM/Element.h
@@ -85,7 +85,7 @@ public:
virtual void apply_presentational_hints(CSS::StyleProperties&) const { }
virtual void parse_attribute(const FlyString& name, const String& value);
- virtual void did_remove_attribute(FlyString const&) { }
+ virtual void did_remove_attribute(FlyString const&);
enum class NeedsRelayout {
No = 0,