summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/Layout/TextNode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibWeb/Layout/TextNode.cpp')
-rw-r--r--Userland/Libraries/LibWeb/Layout/TextNode.cpp14
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 {};