well hello friends
\ No newline at end of file
diff --git a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp
index 245d051f6f..543bcc761c 100644
--- a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp
@@ -505,8 +505,17 @@ void BlockFormattingContext::layout_inline_children(BlockContainer const& block_
layout_mode,
available_space);
- if (!block_container_state.has_definite_width())
- block_container_state.set_content_width(context.automatic_content_width());
+ if (!block_container_state.has_definite_width()) {
+ // NOTE: max-width for boxes with inline children can only be applied after inside layout is done
+ // and width of box content is known
+ auto used_width_px = context.automatic_content_width();
+ if (!should_treat_max_width_as_none(block_container, available_space.width)) {
+ auto max_width_px = calculate_inner_width(block_container, available_space.width, block_container.computed_values().max_width()).to_px(block_container);
+ if (used_width_px > max_width_px)
+ used_width_px = max_width_px;
+ }
+ block_container_state.set_content_width(used_width_px);
+ }
if (!block_container_state.has_definite_height())
block_container_state.set_content_height(context.automatic_content_height());
}
diff --git a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp
index fa5415d0c5..8b325af4da 100644
--- a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp
@@ -1837,6 +1837,14 @@ bool FormattingContext::should_treat_max_width_as_none(Box const& box, Available
if (!m_state.get(*box.non_anonymous_containing_block()).has_definite_width())
return true;
}
+ if (box.children_are_inline()) {
+ if (max_width.is_fit_content() && available_width.is_intrinsic_sizing_constraint())
+ return true;
+ if (max_width.is_max_content() && available_width.is_max_content())
+ return true;
+ if (max_width.is_min_content() && available_width.is_min_content())
+ return true;
+ }
return false;
}