From 30685a7714e1b18f7da48753769ac7ae0bc442c7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 15 Dec 2020 19:39:33 +0100 Subject: [PATCH] LibWeb: Add equals() for LengthStyleValue and ColorStyleValue The default equals() does to_string() on both sides which is pretty silly when they are of the same type. --- Libraries/LibWeb/CSS/Length.h | 10 ++++++++++ Libraries/LibWeb/CSS/StyleValue.h | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Libraries/LibWeb/CSS/Length.h b/Libraries/LibWeb/CSS/Length.h index ec781aee6d..ff1d2897b0 100644 --- a/Libraries/LibWeb/CSS/Length.h +++ b/Libraries/LibWeb/CSS/Length.h @@ -154,6 +154,16 @@ public: return String::format("[%g %s]", m_value, unit_name()); } + bool operator==(const Length& other) const + { + return m_type == other.m_type && m_value == other.m_value; + } + + bool operator!=(const Length& other) const + { + return !(*this == other); + } + private: float relative_length_to_px(const Layout::Node&) const; diff --git a/Libraries/LibWeb/CSS/StyleValue.h b/Libraries/LibWeb/CSS/StyleValue.h index 52b724c57c..2fba93a988 100644 --- a/Libraries/LibWeb/CSS/StyleValue.h +++ b/Libraries/LibWeb/CSS/StyleValue.h @@ -338,6 +338,13 @@ public: virtual bool is_auto() const override { return m_length.is_auto(); } + virtual bool equals(const StyleValue& other) const override + { + if (type() != other.type()) + return false; + return m_length == static_cast(other).m_length; + } + private: explicit LengthStyleValue(const Length& length) : StyleValue(Type::Length) @@ -388,6 +395,13 @@ public: String to_string() const override { return m_color.to_string(); } Color to_color(const DOM::Document&) const override { return m_color; } + virtual bool equals(const StyleValue& other) const override + { + if (type() != other.type()) + return false; + return m_color == static_cast(other).m_color; + } + private: explicit ColorStyleValue(Color color) : StyleValue(Type::Color)