1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 20:57:35 +00:00

LibWeb: Make LineBuilder respect LayoutMode::OnlyRequiredLineBreaks

In this layout mode, we should only break when forced (e.g by an
explicit <br> tag.) This is used when determining intrinsic sizes.)
This commit is contained in:
Andreas Kling 2022-01-20 16:19:05 +01:00
parent 78f2ddfc14
commit 251b2f49a2
2 changed files with 16 additions and 6 deletions

View file

@ -46,12 +46,16 @@ void LineBuilder::append_text_chunk(TextNode& text_node, size_t offset_in_node,
m_max_height_on_current_line = max(m_max_height_on_current_line, height);
}
void LineBuilder::break_if_needed(LayoutMode layout_mode, float next_item_width, bool should_force_break)
bool LineBuilder::should_break(LayoutMode layout_mode, float next_item_width, bool should_force_break)
{
if (layout_mode == LayoutMode::AllPossibleLineBreaks
|| should_force_break
|| (m_context.containing_block().line_boxes().last().width() + next_item_width) > m_available_width_for_current_line)
break_line();
if (layout_mode == LayoutMode::AllPossibleLineBreaks)
return true;
if (should_force_break)
return true;
if (layout_mode == LayoutMode::OnlyRequiredLineBreaks)
return false;
auto current_line_width = m_context.containing_block().line_boxes().last().width();
return (current_line_width + next_item_width) > m_available_width_for_current_line;
}
void LineBuilder::update_last_line()