LibWeb: Give UsedValues a pointer to containing block UsedValues

This will allow us to skip hash lookups when traversing the containing
block chain and looking at everyone's UsedValues.
This commit is contained in:
Andreas Kling 2024-01-17 11:23:33 +01:00
parent 0a09ff698f
commit 8e31bfb83c
2 changed files with 4 additions and 0 deletions

View file

@ -540,6 +540,7 @@ void LayoutState::commit(Box& root)
void LayoutState::UsedValues::set_node(NodeWithStyle& node, UsedValues const* containing_block_used_values)
{
m_node = &node;
m_containing_block_used_values = containing_block_used_values;
// NOTE: In the code below, we decide if `node` has definite width and/or height.
// This attempts to cover all the *general* cases where CSS considers sizes to be definite.

View file

@ -45,6 +45,8 @@ struct LayoutState {
NodeWithStyle const& node() const { return *m_node; }
void set_node(NodeWithStyle&, UsedValues const* containing_block_used_values);
UsedValues const* containing_block_used_values() const { return m_containing_block_used_values; }
CSSPixels content_width() const { return m_content_width; }
CSSPixels content_height() const { return m_content_height; }
void set_content_width(CSSPixels);
@ -142,6 +144,7 @@ struct LayoutState {
CSSPixels border_bottom_collapsed() const { return use_collapsing_borders_model() ? round(border_bottom / 2) : border_bottom; }
JS::GCPtr<Layout::NodeWithStyle> m_node { nullptr };
UsedValues const* m_containing_block_used_values { nullptr };
CSSPixels m_content_width { 0 };
CSSPixels m_content_height { 0 };