diff options
Diffstat (limited to 'Userland/Libraries/LibWeb/Layout/TextNode.cpp')
-rw-r--r-- | Userland/Libraries/LibWeb/Layout/TextNode.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Userland/Libraries/LibWeb/Layout/TextNode.cpp b/Userland/Libraries/LibWeb/Layout/TextNode.cpp index f1ad910b88..bee02d93ad 100644 --- a/Userland/Libraries/LibWeb/Layout/TextNode.cpp +++ b/Userland/Libraries/LibWeb/Layout/TextNode.cpp @@ -85,9 +85,10 @@ void TextNode::compute_text_for_rendering(bool collapse) m_text_for_rendering = builder.to_string(); } -TextNode::ChunkIterator::ChunkIterator(StringView text, bool wrap_lines, bool respect_linebreaks) +TextNode::ChunkIterator::ChunkIterator(StringView text, bool wrap_lines, bool respect_linebreaks, bool is_generated_empty_string) : m_wrap_lines(wrap_lines) , m_respect_linebreaks(respect_linebreaks) + , m_should_emit_one_empty_chunk(is_generated_empty_string) , m_utf8_view(text) , m_iterator(m_utf8_view.begin()) { @@ -95,6 +96,17 @@ TextNode::ChunkIterator::ChunkIterator(StringView text, bool wrap_lines, bool re Optional<TextNode::Chunk> TextNode::ChunkIterator::next() { + if (m_should_emit_one_empty_chunk) { + m_should_emit_one_empty_chunk = false; + return Chunk { + .view = {}, + .start = 0, + .length = 0, + .has_breaking_newline = false, + .is_all_whitespace = false, + }; + } + if (m_iterator == m_utf8_view.end()) return {}; |