Browse Source

LibWeb: Make PercentageOr<T> equality comparison work for calc() values

This makes hovering around on GitHub fast again, as it no longer
believes that the grid-template-areas property keeps changing
when it didn't :^)

Also made to_string() work for calc() values as well, since I stumbled
upon that while debugging this.
Andreas Kling 2 năm trước cách đây
mục cha
commit
c8cf599c44

+ 5 - 2
Userland/Libraries/LibWeb/CSS/PercentageOr.h

@@ -114,18 +114,21 @@ public:
 
 
     ErrorOr<String> to_string() const
     ErrorOr<String> to_string() const
     {
     {
+        if (is_calculated())
+            return m_value.template get<NonnullRefPtr<CalculatedStyleValue>>()->to_string();
         if (is_percentage())
         if (is_percentage())
             return m_value.template get<Percentage>().to_string();
             return m_value.template get<Percentage>().to_string();
-
         return m_value.template get<T>().to_string();
         return m_value.template get<T>().to_string();
     }
     }
 
 
     bool operator==(PercentageOr<T> const& other) const
     bool operator==(PercentageOr<T> const& other) const
     {
     {
-        if (is_calculated())
+        if (is_calculated() != other.is_calculated())
             return false;
             return false;
         if (is_percentage() != other.is_percentage())
         if (is_percentage() != other.is_percentage())
             return false;
             return false;
+        if (is_calculated())
+            return (*m_value.template get<NonnullRefPtr<CalculatedStyleValue>>() == *other.m_value.template get<NonnullRefPtr<CalculatedStyleValue>>());
         if (is_percentage())
         if (is_percentage())
             return (m_value.template get<Percentage>() == other.m_value.template get<Percentage>());
             return (m_value.template get<Percentage>() == other.m_value.template get<Percentage>());
         return (m_value.template get<T>() == other.m_value.template get<T>());
         return (m_value.template get<T>() == other.m_value.template get<T>());