LibHTML: Don't add whitespace line box fragments at start of line

Collapse whitespace at the start of a line so we don't end up with
" foo bar" :^)
This commit is contained in:
Andreas Kling 2019-10-03 15:55:18 +02:00
parent 279e1dbfc5
commit 4a88caf8e7
Notes: sideshowbarker 2024-07-19 11:49:58 +09:00

View file

@ -198,13 +198,16 @@ void LayoutText::split_into_lines(LayoutBlock& container)
for_each_word([&](const Utf8View& view, int start, int length) {
words.append({ Utf8View(view), start, length });
});
for (int i = 0; i < words.size(); ++i) {
auto& word = words[i];
int word_width;
if (isspace(*word.view.begin()))
bool is_whitespace = isspace(*word.view.begin());
if (is_whitespace)
word_width = space_width;
else
word_width = m_font->width(word.view);
@ -214,7 +217,15 @@ void LayoutText::split_into_lines(LayoutBlock& container)
available_width = container.rect().width();
}
if (is_whitespace && line_boxes.last().fragments().is_empty())
continue;
line_boxes.last().add_fragment(*this, word.start, word.length, word_width, line_height);
available_width -= word_width;
if (available_width < 0) {
line_boxes.append(LineBox());
available_width = container.rect().width();
}
}
}