ladybird/Libraries/LibWeb/CSS/StyleValues/TextIndentStyleValue.h
Aliaksandr Kalenik 9cd583ff6e LibWeb: Use value-comparing RefPtr in TextIndentStyleValue
The member type was NonnullRefPtr which compares by pointer identity.
This caused false positives in style invalidation when the same values
were recomputed as different objects.
2026-01-06 13:23:00 +00:00

43 lines
1.3 KiB
C++

/*
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/CSS/StyleValues/StyleValue.h>
namespace Web::CSS {
class TextIndentStyleValue : public StyleValueWithDefaultOperators<TextIndentStyleValue> {
public:
enum class Hanging : u8 {
No,
Yes,
};
enum class EachLine : u8 {
No,
Yes,
};
static ValueComparingNonnullRefPtr<TextIndentStyleValue const> create(NonnullRefPtr<StyleValue const> length_percentage, Hanging hanging, EachLine each_line);
virtual ~TextIndentStyleValue() override;
StyleValue const& length_percentage() const { return m_length_percentage; }
bool hanging() const { return m_hanging; }
bool each_line() const { return m_each_line; }
virtual String to_string(SerializationMode) const override;
virtual ValueComparingNonnullRefPtr<StyleValue const> absolutized(ComputationContext const&) const override;
bool properties_equal(TextIndentStyleValue const&) const;
private:
TextIndentStyleValue(NonnullRefPtr<StyleValue const> length_percentage, Hanging hanging, EachLine each_line);
ValueComparingNonnullRefPtr<StyleValue const> m_length_percentage;
bool m_hanging;
bool m_each_line;
};
}