mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:07:35 +00:00
LibWeb: Don't append collapsible whitespace to start of new line
After performing a required line break, and the next text chunk is all collapsible whitespace, simply discard the whitespace.
This commit is contained in:
parent
de53eb825a
commit
d32630e17b
2 changed files with 10 additions and 3 deletions
|
@ -257,7 +257,10 @@ void InlineFormattingContext::generate_line_boxes(LayoutMode layout_mode)
|
||||||
|
|
||||||
case InlineLevelIterator::Item::Type::Text: {
|
case InlineLevelIterator::Item::Type::Text: {
|
||||||
auto& text_node = verify_cast<Layout::TextNode>(*item.node);
|
auto& text_node = verify_cast<Layout::TextNode>(*item.node);
|
||||||
line_builder.break_if_needed(layout_mode, item.border_box_width(), item.should_force_break);
|
if (line_builder.break_if_needed(layout_mode, item.border_box_width(), item.should_force_break)) {
|
||||||
|
if (item.is_collapsible_whitespace)
|
||||||
|
break;
|
||||||
|
}
|
||||||
line_builder.append_text_chunk(
|
line_builder.append_text_chunk(
|
||||||
text_node,
|
text_node,
|
||||||
item.offset_in_node,
|
item.offset_in_node,
|
||||||
|
|
|
@ -22,10 +22,14 @@ public:
|
||||||
void append_box(Box const&, float leading_size, float trailing_size, float leading_margin, float trailing_margin);
|
void append_box(Box const&, float leading_size, float trailing_size, float leading_margin, float trailing_margin);
|
||||||
void append_text_chunk(TextNode const&, size_t offset_in_node, size_t length_in_node, float leading_size, float trailing_size, float leading_margin, float trailing_margin, float content_width, float content_height);
|
void append_text_chunk(TextNode const&, size_t offset_in_node, size_t length_in_node, float leading_size, float trailing_size, float leading_margin, float trailing_margin, float content_width, float content_height);
|
||||||
|
|
||||||
void break_if_needed(LayoutMode layout_mode, float next_item_width, bool should_force_break)
|
// Returns whether a line break occurred.
|
||||||
|
bool break_if_needed(LayoutMode layout_mode, float next_item_width, bool should_force_break)
|
||||||
{
|
{
|
||||||
if (should_break(layout_mode, next_item_width, should_force_break))
|
if (should_break(layout_mode, next_item_width, should_force_break)) {
|
||||||
break_line();
|
break_line();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
float available_width_for_current_line() const { return m_available_width_for_current_line; }
|
float available_width_for_current_line() const { return m_available_width_for_current_line; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue