1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 15:38:10 +00:00

LibHTML: LayoutText should always use parent's style properties

This patch makes StyleProperties heap-allocated and ref-counted so that
a LayoutNode can be without one. The ref-counting also allows anonymous
blocks to share style with their parent block.

LayoutText never needs a StyleProperties, since text always inherits
style from its parent element. This is handled by style_properties().
This commit is contained in:
Andreas Kling 2019-10-04 12:12:39 +02:00
parent 79d8b9ae75
commit 4e35bbffdd
14 changed files with 45 additions and 39 deletions

View file

@ -8,12 +8,12 @@ class LineBoxFragment;
class LayoutText : public LayoutInline {
public:
LayoutText(const Text&, StyleProperties&&);
explicit LayoutText(const Text&);
virtual ~LayoutText() override;
const Text& node() const { return static_cast<const Text&>(*LayoutNode::node()); }
const String& text() const;
const String& text_for_style(const StyleProperties&) const;
virtual const char* class_name() const override { return "LayoutText"; }
virtual bool is_text() const final { return true; }
@ -22,6 +22,8 @@ public:
virtual void split_into_lines(LayoutBlock& container) override;
const StyleProperties& style_properties() const { return parent()->style_properties(); }
private:
template<typename Callback>
void for_each_word(Callback) const;
@ -29,7 +31,6 @@ private:
void for_each_source_line(Callback) const;
void load_font();
void compute_runs();
RefPtr<Font> m_font;
};