ladybird/Userland/Libraries/LibWeb/Layout
Andreas Kling af118abdf0 LibWeb: Use fit-content width in place of indefinite flex item widths
In `flex-direction: column` layouts, a flex item's intrinsic height may
depend on its width, but the width is calculated *after* the intrinsic
height is required.

Unfortunately, the specification doesn't tell us exactly what to do here
(missing inputs to intrinsic sizing is a common problem) so we take the
solution that flexbox applies in 9.2.3.C and apply it to all intrinsic
height calculations within FlexFormattingContext: if the used width of
an item is not yet known when its intrinsic height is requested, we
substitute the fit-content width instead.

Note that while this is technically ad-hoc, it's basically extrapolating
the spec's suggestion in one specific case and using it in all cases.
2023-03-27 23:28:07 +02:00
..
AvailableSpace.cpp
AvailableSpace.h LibWeb: Add default equality operators to Available{Space,Size} 2023-03-27 23:28:07 +02:00
BlockContainer.cpp
BlockContainer.h
BlockFormattingContext.cpp LibWeb: Pass available inner space to BFC root auto height calculation 2023-03-27 23:28:07 +02:00
BlockFormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
Box.cpp LibWeb: Declare overflow_value_makes_box_a_scroll_container as static 2023-03-26 10:38:05 -04:00
Box.h LibWeb: Add Layout::Box::is_scroll_container() 2023-03-26 15:14:35 +02:00
BoxModelMetrics.cpp
BoxModelMetrics.h
BreakNode.cpp
BreakNode.h
ButtonBox.cpp Userland: Use Font::pixel_size_rounded_up() instead of glyph_height() 2023-03-04 00:29:38 +01:00
ButtonBox.h
CanvasBox.cpp
CanvasBox.h
CheckBox.cpp
CheckBox.h
FlexFormattingContext.cpp LibWeb: Use fit-content width in place of indefinite flex item widths 2023-03-27 23:28:07 +02:00
FlexFormattingContext.h LibWeb: Use fit-content width in place of indefinite flex item widths 2023-03-27 23:28:07 +02:00
FormAssociatedLabelableNode.h
FormattingContext.cpp LibWeb: Make box content sizes indefinite before intrinsic sizing 2023-03-27 23:28:07 +02:00
FormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
FrameBox.cpp LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00
FrameBox.h
GridFormattingContext.cpp LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
GridFormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
ImageBox.cpp LibWeb: Don't use image source URL as backup alt attribute 2023-03-25 19:41:31 +01:00
ImageBox.h
InlineFormattingContext.cpp LibWeb: Pass available inner space to inline-level SVG layout 2023-03-27 23:28:07 +02:00
InlineFormattingContext.h
InlineLevelIterator.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
InlineLevelIterator.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
InlineNode.cpp
InlineNode.h
Label.cpp LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00
Label.h
LabelableNode.cpp
LabelableNode.h
LayoutState.cpp LibWeb: Make box content sizes indefinite before intrinsic sizing 2023-03-27 23:28:07 +02:00
LayoutState.h LibWeb: Make box content sizes indefinite before intrinsic sizing 2023-03-27 23:28:07 +02:00
LineBox.cpp
LineBox.h LibWeb: Don't drop single <br/> lines 2023-03-16 08:40:29 +00:00
LineBoxFragment.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
LineBoxFragment.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
LineBuilder.cpp LibWeb: Don't drop single <br/> lines 2023-03-16 08:40:29 +00:00
LineBuilder.h
ListItemBox.cpp
ListItemBox.h LibWeb: Add fast_is<T>() for various types stood out in a profile 2023-03-11 10:46:26 +01:00
ListItemMarkerBox.cpp
ListItemMarkerBox.h
Node.cpp LibWeb: Split StyleValueList out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
Node.h LibWeb: Add fast_is<T>() for various types stood out in a profile 2023-03-11 10:46:26 +01:00
Progress.cpp
Progress.h
RadioButton.cpp
RadioButton.h
ReplacedBox.cpp
ReplacedBox.h
SVGBox.cpp
SVGBox.h
SVGFormattingContext.cpp LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
SVGFormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
SVGGeometryBox.cpp
SVGGeometryBox.h LibWeb: Use static_cast in SVGGeometryBox::dom_node() 2023-03-11 10:46:26 +01:00
SVGGraphicsBox.cpp
SVGGraphicsBox.h
SVGSVGBox.cpp LibWeb: Support more length types in SVG width/height attributes 2023-03-20 23:45:01 +01:00
SVGSVGBox.h LibWeb: Add fast_is<T>() for various types stood out in a profile 2023-03-11 10:46:26 +01:00
TableBox.cpp
TableBox.h LibWeb: Add Layout::Node::is_table() and make is<TableBox>() fast 2023-01-24 11:44:03 +01:00
TableCellBox.cpp
TableCellBox.h
TableFormattingContext.cpp LibWeb: Fix intrinsic sizing early return condition in TFC 2023-03-27 23:10:16 +02:00
TableFormattingContext.h LibWeb: Let FormattingContext decide the automatic width of its root 2023-03-20 17:57:58 +01:00
TableRowBox.cpp
TableRowBox.h
TableRowGroupBox.cpp
TableRowGroupBox.h
TableWrapper.cpp
TableWrapper.h
TextNode.cpp
TextNode.h
TreeBuilder.cpp LibWeb: Add out-of-flow boxes to anonymous wrapper block when possible 2023-03-25 19:41:31 +01:00
TreeBuilder.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
Viewport.cpp LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00
Viewport.h LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00