From c2e1dd67c95b326ebf7bc70fe35d013ba3c2be26 Mon Sep 17 00:00:00 2001 From: Matrix89 Date: Sun, 5 Jan 2020 16:54:38 +0100 Subject: [PATCH] LibHTML: Replace StyleProperties::create(StyleProperties) with clone() --- Libraries/LibHTML/CSS/StyleProperties.cpp | 19 +++++++++++++++++++ Libraries/LibHTML/CSS/StyleProperties.h | 13 ++++++------- Libraries/LibHTML/DOM/Element.cpp | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/Libraries/LibHTML/CSS/StyleProperties.cpp b/Libraries/LibHTML/CSS/StyleProperties.cpp index d179ce9718..25ec56b950 100644 --- a/Libraries/LibHTML/CSS/StyleProperties.cpp +++ b/Libraries/LibHTML/CSS/StyleProperties.cpp @@ -3,6 +3,25 @@ #include #include +StyleProperties::StyleProperties() +{ +} + +StyleProperties::StyleProperties(const StyleProperties& other) + : m_property_values(*new HashMap(other.m_property_values)) +{ + if (other.m_font) { + m_font = other.m_font->clone(); + } else { + m_font = nullptr; + } +} + +NonnullRefPtr StyleProperties::clone() const +{ + return adopt(*new StyleProperties(*this)); +} + void StyleProperties::set_property(CSS::PropertyID id, NonnullRefPtr value) { m_property_values.set((unsigned)id, move(value)); diff --git a/Libraries/LibHTML/CSS/StyleProperties.h b/Libraries/LibHTML/CSS/StyleProperties.h index 79ef18226f..454267c3f1 100644 --- a/Libraries/LibHTML/CSS/StyleProperties.h +++ b/Libraries/LibHTML/CSS/StyleProperties.h @@ -9,14 +9,13 @@ class Color; class StyleProperties : public RefCounted { public: + StyleProperties(); + + explicit StyleProperties(const StyleProperties&); + static NonnullRefPtr create() { return adopt(*new StyleProperties); } - static NonnullRefPtr create(const StyleProperties& properties) { - auto style_properties = new StyleProperties(); - properties.for_each_property([&](auto property_id, auto& property_value) { - style_properties->set_property(property_id, property_value); - }); - return adopt(*style_properties); - } + + NonnullRefPtr clone() const; template inline void for_each_property(Callback callback) const diff --git a/Libraries/LibHTML/DOM/Element.cpp b/Libraries/LibHTML/DOM/Element.cpp index d0e6d92d53..08b86e88e3 100644 --- a/Libraries/LibHTML/DOM/Element.cpp +++ b/Libraries/LibHTML/DOM/Element.cpp @@ -165,7 +165,7 @@ void Element::recompute_style() RefPtr Element::computed_style() { - auto properties = StyleProperties::create(*m_resolved_style); + auto properties = m_resolved_style->clone(); if (layout_node() && layout_node()->has_style()) { CSS::PropertyID box_model_metrics[] = { CSS::PropertyID::MarginTop,