LibWeb: Make LineBuilder assign height to empty line boxes

This ensures that <br> produces empty line boxes with the line-height
property as their height.
This commit is contained in:
Andreas Kling 2022-01-23 01:34:26 +01:00
parent 093a598c87
commit b60e19fd34
Notes: sideshowbarker 2024-07-17 20:25:17 +09:00
2 changed files with 7 additions and 5 deletions

View file

@ -12,7 +12,7 @@ namespace Web::Layout {
LineBuilder::LineBuilder(InlineFormattingContext& context)
: m_context(context)
{
begin_new_line();
begin_new_line(false);
}
LineBuilder::~LineBuilder()
@ -25,12 +25,13 @@ void LineBuilder::break_line()
{
update_last_line();
m_context.containing_block().line_boxes().append(LineBox());
begin_new_line();
begin_new_line(true);
}
void LineBuilder::begin_new_line()
void LineBuilder::begin_new_line(bool increment_y)
{
m_current_y += m_max_height_on_current_line;
if (increment_y)
m_current_y += max(m_max_height_on_current_line, m_context.containing_block().line_height());
auto space = m_context.available_space_for_line(m_current_y);
m_available_width_for_current_line = space.right - space.left;
m_max_height_on_current_line = 0;

View file

@ -19,7 +19,6 @@ public:
~LineBuilder();
void break_line();
void begin_new_line();
void append_box(Box&);
void append_text_chunk(TextNode&, size_t offset_in_node, size_t length_in_node, float width, float height);
@ -36,6 +35,8 @@ public:
void remove_last_line_if_empty();
private:
void begin_new_line(bool increment_y);
bool should_break(LayoutMode, float next_item_width, bool should_force_break);
InlineFormattingContext& m_context;