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.
This commit is contained in:
Andreas Kling 2020-12-15 19:39:33 +01:00
parent 58bade25dd
commit 30685a7714
Notes: sideshowbarker 2024-07-19 00:48:40 +09:00
2 changed files with 24 additions and 0 deletions

View file

@ -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;

View file

@ -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<const LengthStyleValue&>(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<const ColorStyleValue&>(other).m_color;
}
private:
explicit ColorStyleValue(Color color)
: StyleValue(Type::Color)