diff --git a/Userland/Libraries/LibWeb/CSS/Identifiers.json b/Userland/Libraries/LibWeb/CSS/Identifiers.json index 11af8eae41..b8c9252910 100644 --- a/Userland/Libraries/LibWeb/CSS/Identifiers.json +++ b/Userland/Libraries/LibWeb/CSS/Identifiers.json @@ -77,6 +77,7 @@ "crosshair", "dashed", "decimal", + "decimal-leading-zero", "default", "disc", "dotted", diff --git a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp index 853ca513dd..812f398f5b 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp @@ -576,6 +576,8 @@ Optional StyleProperties::list_style_type() const return CSS::ListStyleType::Square; case CSS::ValueID::Decimal: return CSS::ListStyleType::Decimal; + case CSS::ValueID::DecimalLeadingZero: + return CSS::ListStyleType::DecimalLeadingZero; default: return {}; } diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index d4ad707d38..ac7d84aa2b 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -159,6 +159,7 @@ enum class ListStyleType { Circle, Square, Decimal, + DecimalLeadingZero, }; enum class Overflow : u8 { diff --git a/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp b/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp index d91e2da213..ad99a0b851 100644 --- a/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp +++ b/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp @@ -52,6 +52,13 @@ void ListItemMarkerBox::paint(PaintContext& context, PaintPhase phase) case CSS::ListStyleType::Disc: context.painter().fill_ellipse(marker_rect, color); break; + case CSS::ListStyleType::DecimalLeadingZero: + // This is weird, but in accordance to spec. + context.painter().draw_text( + enclosing, + m_index < 10 ? String::formatted("0{}.", m_index) : String::formatted("{}.", m_index), + Gfx::TextAlignment::Center); + break; case CSS::ListStyleType::None: return;