mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:57: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: {
|
||||
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(
|
||||
text_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_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();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
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