LibWeb: Make the ListItemMarkerBox index-aware.

In the ListItemBox we get the index of the current <li> element in the
parent and pass it to the ListItemMarkerBox.

This patch is work towards #2059
This commit is contained in:
Tobias Christiansen 2021-04-17 23:10:10 +02:00 committed by Andreas Kling
parent c09ac536c5
commit bfcfe84240
Notes: sideshowbarker 2024-07-18 19:20:09 +09:00
3 changed files with 13 additions and 3 deletions

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Tobias Christiansen <tobi@tobyase.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -49,7 +50,8 @@ void ListItemBox::layout_marker()
return;
if (!m_marker) {
m_marker = adopt(*new ListItemMarkerBox(document()));
int child_index = parent()->index_of_child<ListItemBox>(*this).value();
m_marker = adopt(*new ListItemMarkerBox(document(), computed_values().list_style_type(), child_index + 1));
if (first_child())
m_marker->set_inline(first_child()->is_inline());
append_child(*m_marker);

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Tobias Christiansen <tobi@tobyase.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -29,8 +30,10 @@
namespace Web::Layout {
ListItemMarkerBox::ListItemMarkerBox(DOM::Document& document)
ListItemMarkerBox::ListItemMarkerBox(DOM::Document& document, CSS::ListStyleType style_type, size_t index)
: Box(document, nullptr, CSS::StyleProperties::create())
, m_list_style_type(style_type)
, m_index(index)
{
}

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Tobias Christiansen <tobi@tobyase.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -32,10 +33,14 @@ namespace Web::Layout {
class ListItemMarkerBox final : public Box {
public:
explicit ListItemMarkerBox(DOM::Document&);
explicit ListItemMarkerBox(DOM::Document&, CSS::ListStyleType, size_t index);
virtual ~ListItemMarkerBox() override;
virtual void paint(PaintContext&, PaintPhase) override;
private:
CSS::ListStyleType m_list_style_type { CSS::ListStyleType::None };
size_t m_index;
};
}