summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
authorSam Atkins <atkinssj@serenityos.org>2022-02-15 16:42:00 +0000
committerAndreas Kling <kling@serenityos.org>2022-02-16 21:47:53 +0100
commitae93aeb414334e5bb58517279783c01b95c74ca9 (patch)
treee91fb97990473ef3bac36a1e728f725defd01624 /Userland
parentd159511d8505947f31214b6c9fed08bb6c45983f (diff)
downloadserenity-ae93aeb414334e5bb58517279783c01b95c74ca9.zip
LibWeb: Give `<svg>` elements a size again
This replaces the unused width() and height() methods. The size now defaults to 100% by 100% as in the spec.
Diffstat (limited to 'Userland')
-rw-r--r--Userland/Libraries/LibWeb/SVG/SVGSVGElement.cpp22
-rw-r--r--Userland/Libraries/LibWeb/SVG/SVGSVGElement.h3
2 files changed, 16 insertions, 9 deletions
diff --git a/Userland/Libraries/LibWeb/SVG/SVGSVGElement.cpp b/Userland/Libraries/LibWeb/SVG/SVGSVGElement.cpp
index f7583076a0..df0e3b937a 100644
--- a/Userland/Libraries/LibWeb/SVG/SVGSVGElement.cpp
+++ b/Userland/Libraries/LibWeb/SVG/SVGSVGElement.cpp
@@ -5,6 +5,7 @@
*/
#include <LibGfx/Painter.h>
+#include <LibWeb/CSS/Parser/Parser.h>
#include <LibWeb/CSS/StyleComputer.h>
#include <LibWeb/DOM/Document.h>
#include <LibWeb/DOM/Event.h>
@@ -24,14 +25,21 @@ RefPtr<Layout::Node> SVGSVGElement::create_layout_node(NonnullRefPtr<CSS::StyleP
return adopt_ref(*new Layout::SVGSVGBox(document(), *this, move(style)));
}
-unsigned SVGSVGElement::width() const
+void SVGSVGElement::apply_presentational_hints(CSS::StyleProperties& style) const
{
- return attribute(HTML::AttributeNames::width).to_uint().value_or(300);
-}
-
-unsigned SVGSVGElement::height() const
-{
- return attribute(HTML::AttributeNames::height).to_uint().value_or(150);
+ // Width defaults to 100%
+ if (auto width_value = parse_html_length(document(), attribute("width"))) {
+ style.set_property(CSS::PropertyID::Width, width_value.release_nonnull());
+ } else {
+ style.set_property(CSS::PropertyID::Width, CSS::PercentageStyleValue::create(CSS::Percentage { 100 }));
+ }
+
+ // Height defaults to 100%
+ if (auto height_value = parse_html_length(document(), attribute("height"))) {
+ style.set_property(CSS::PropertyID::Height, height_value.release_nonnull());
+ } else {
+ style.set_property(CSS::PropertyID::Height, CSS::PercentageStyleValue::create(CSS::Percentage { 100 }));
+ }
}
void SVGSVGElement::parse_attribute(FlyString const& name, String const& value)
diff --git a/Userland/Libraries/LibWeb/SVG/SVGSVGElement.h b/Userland/Libraries/LibWeb/SVG/SVGSVGElement.h
index f36b32022b..d20d633c5b 100644
--- a/Userland/Libraries/LibWeb/SVG/SVGSVGElement.h
+++ b/Userland/Libraries/LibWeb/SVG/SVGSVGElement.h
@@ -20,8 +20,7 @@ public:
virtual RefPtr<Layout::Node> create_layout_node(NonnullRefPtr<CSS::StyleProperties>) override;
- unsigned width() const;
- unsigned height() const;
+ virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
virtual bool requires_svg_container() const override { return false; }
virtual bool is_svg_container() const override { return true; }