diff --git a/Userland/Libraries/LibWeb/Layout/LineBuilder.cpp b/Userland/Libraries/LibWeb/Layout/LineBuilder.cpp index 606ded8c7a..69d317f3ef 100644 --- a/Userland/Libraries/LibWeb/Layout/LineBuilder.cpp +++ b/Userland/Libraries/LibWeb/Layout/LineBuilder.cpp @@ -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; diff --git a/Userland/Libraries/LibWeb/Layout/LineBuilder.h b/Userland/Libraries/LibWeb/Layout/LineBuilder.h index b2c4a9e1ce..dea23ad737 100644 --- a/Userland/Libraries/LibWeb/Layout/LineBuilder.h +++ b/Userland/Libraries/LibWeb/Layout/LineBuilder.h @@ -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;