1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:47:34 +00:00

LibWeb: Make LineBuilder aware of the current LayoutMode

This will allow us to override the available space correctly when doing
intrinsic sizing.
This commit is contained in:
Andreas Kling 2022-03-18 14:39:07 +01:00
parent 915ee66bd6
commit 28642de6ed
3 changed files with 5 additions and 3 deletions

View file

@ -197,7 +197,7 @@ void InlineFormattingContext::generate_line_boxes(LayoutMode layout_mode)
line_boxes.clear_with_capacity();
InlineLevelIterator iterator(*this, m_state, containing_block(), layout_mode);
LineBuilder line_builder(*this, m_state);
LineBuilder line_builder(*this, m_state, layout_mode);
for (;;) {
auto item_opt = iterator.next(line_builder.available_width_for_current_line());

View file

@ -9,10 +9,11 @@
namespace Web::Layout {
LineBuilder::LineBuilder(InlineFormattingContext& context, FormattingState& formatting_state)
LineBuilder::LineBuilder(InlineFormattingContext& context, FormattingState& formatting_state, LayoutMode layout_mode)
: m_context(context)
, m_formatting_state(formatting_state)
, m_containing_block_state(formatting_state.get_mutable(context.containing_block()))
, m_layout_mode(layout_mode)
{
begin_new_line(false);
}

View file

@ -15,7 +15,7 @@ class LineBuilder {
AK_MAKE_NONMOVABLE(LineBuilder);
public:
LineBuilder(InlineFormattingContext&, FormattingState&);
LineBuilder(InlineFormattingContext&, FormattingState&, LayoutMode);
~LineBuilder();
void break_line();
@ -44,6 +44,7 @@ private:
InlineFormattingContext& m_context;
FormattingState& m_formatting_state;
FormattingState::NodeState& m_containing_block_state;
LayoutMode m_layout_mode {};
float m_available_width_for_current_line { 0 };
float m_current_y { 0 };
float m_max_height_on_current_line { 0 };