LibWeb: Use the cached text-align value in LineBox::add_fragment()

This commit is contained in:
Andreas Kling 2020-06-24 00:09:45 +02:00
parent f4ecb5362f
commit 26eef65017
Notes: sideshowbarker 2024-07-19 05:24:55 +09:00
2 changed files with 9 additions and 1 deletions

View File

@ -191,6 +191,7 @@ public:
const StyleProperties& style() const;
CSS::Position position() const;
CSS::TextAlign text_align() const;
LayoutNodeWithStyle* parent();
const LayoutNodeWithStyle* parent() const;
@ -299,6 +300,13 @@ inline CSS::Position LayoutNode::position() const
return parent()->position();
}
inline CSS::TextAlign LayoutNode::text_align() const
{
if (m_has_style)
return static_cast<const LayoutNodeWithStyle*>(this)->text_align();
return parent()->text_align();
}
inline const LayoutNodeWithStyle* LayoutNode::parent() const
{
return static_cast<const LayoutNodeWithStyle*>(TreeNode<LayoutNode>::parent());

View File

@ -35,7 +35,7 @@ namespace Web {
void LineBox::add_fragment(const LayoutNode& layout_node, int start, int length, int width, int height)
{
bool text_align_is_justify = layout_node.style().string_or_fallback(CSS::PropertyID::TextAlign, "left") == "justify";
bool text_align_is_justify = layout_node.text_align() == CSS::TextAlign::Justify;
if (!text_align_is_justify && !m_fragments.is_empty() && &m_fragments.last().layout_node() == &layout_node) {
// The fragment we're adding is from the last LayoutNode on the line.
// Expand the last fragment instead of adding a new one with the same LayoutNode.