diff --git a/Libraries/LibWeb/CSS/StyleComputer.cpp b/Libraries/LibWeb/CSS/StyleComputer.cpp index 2d86f7e9c4d..d6dcde73fa6 100644 --- a/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -3280,7 +3280,7 @@ void RuleCache::for_each_matching_rules(DOM::Element const& element, Optionalvalue) == IterationDecision::Break) return; } diff --git a/Libraries/LibWeb/DOM/Element.h b/Libraries/LibWeb/DOM/Element.h index 6941e7c9283..a12400ae8d7 100644 --- a/Libraries/LibWeb/DOM/Element.h +++ b/Libraries/LibWeb/DOM/Element.h @@ -117,6 +117,8 @@ public: virtual FlyString node_name() const final { return html_uppercased_qualified_name(); } FlyString const& local_name() const { return m_qualified_name.local_name(); } + FlyString const& lowercased_local_name() const { return m_qualified_name.lowercased_local_name(); } + // NOTE: This is for the JS bindings FlyString const& tag_name() const { return html_uppercased_qualified_name(); } diff --git a/Libraries/LibWeb/DOM/QualifiedName.cpp b/Libraries/LibWeb/DOM/QualifiedName.cpp index c2937802667..531a2af72f2 100644 --- a/Libraries/LibWeb/DOM/QualifiedName.cpp +++ b/Libraries/LibWeb/DOM/QualifiedName.cpp @@ -56,6 +56,7 @@ QualifiedName::QualifiedName(FlyString const& local_name, Optional co QualifiedName::Impl::Impl(FlyString const& a_local_name, Optional const& a_prefix, Optional const& a_namespace) : local_name(a_local_name) + , lowercased_local_name(local_name.to_ascii_lowercase()) , prefix(a_prefix) , namespace_(a_namespace) { diff --git a/Libraries/LibWeb/DOM/QualifiedName.h b/Libraries/LibWeb/DOM/QualifiedName.h index 9484dedfb87..b933eec1383 100644 --- a/Libraries/LibWeb/DOM/QualifiedName.h +++ b/Libraries/LibWeb/DOM/QualifiedName.h @@ -21,6 +21,8 @@ public: Optional const& prefix() const { return m_impl->prefix; } Optional const& namespace_() const { return m_impl->namespace_; } + FlyString const& lowercased_local_name() const { return m_impl->lowercased_local_name; } + FlyString const& as_string() const { return m_impl->as_string; } struct Impl : public RefCounted { @@ -29,6 +31,7 @@ public: void make_internal_string(); FlyString local_name; + FlyString lowercased_local_name; Optional prefix; Optional namespace_; FlyString as_string; diff --git a/Libraries/LibWeb/SVG/Default.css b/Libraries/LibWeb/SVG/Default.css index e4c8c26890a..5a5945d2a75 100644 --- a/Libraries/LibWeb/SVG/Default.css +++ b/Libraries/LibWeb/SVG/Default.css @@ -14,14 +14,8 @@ svg:not(:root), image, marker, pattern, symbol { overflow: hidden; } white-space-collapse: preserve-spaces; } -/* FIXME: Allow setting the rest of these to `display: none`. - Currently that breaks and and probably others. */ -desc, title, metadata, -pattern, linearGradient, radialGradient, -script, style { - display: none !important; -} -/* +/* NOTE: These rules are in the SVG spec, but don't match how other engines behave. + So we simply comment them out for now. defs, clipPath, mask, marker, desc, title, metadata, @@ -30,10 +24,11 @@ script, style, symbol { display: none !important; } -*/ :host(use) > symbol { display: inline !important; } +*/ + :link, :visited { cursor: pointer; }