Quellcode durchsuchen

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

Andreas Kling vor 5 Jahren
Ursprung
Commit
26eef65017
2 geänderte Dateien mit 9 neuen und 1 gelöschten Zeilen
  1. 8 0
      Libraries/LibWeb/Layout/LayoutNode.h
  2. 1 1
      Libraries/LibWeb/Layout/LineBox.cpp

+ 8 - 0
Libraries/LibWeb/Layout/LayoutNode.h

@@ -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());

+ 1 - 1
Libraries/LibWeb/Layout/LineBox.cpp

@@ -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.