1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 22:18:11 +00:00
serenity/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 LibWeb: Convert FormattingContext to new pixel units 2023-01-05 17:42:31 +01:00
AvailableSpace.h LibWeb: Add default equality operators to Available{Space,Size} 2023-03-27 23:28:07 +02:00
BlockContainer.cpp LibWeb: Move scroll state from Layout::BlockContainer to Layout::Box 2023-01-24 11:44:03 +01:00
BlockContainer.h LibWeb: Move scroll state from Layout::BlockContainer to Layout::Box 2023-01-24 11:44:03 +01:00
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 Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
BoxModelMetrics.h LibWeb+Browser+WebContent: Convert BoxModelMetrics to new pixel units 2023-01-05 17:42:31 +01:00
BreakNode.cpp LibWeb: Remove Layout::Node::set_inline() 2022-10-06 15:29:38 +02:00
BreakNode.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
ButtonBox.cpp Userland: Use Font::pixel_size_rounded_up() instead of glyph_height() 2023-03-04 00:29:38 +01:00
ButtonBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
CanvasBox.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
CanvasBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
CheckBox.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
CheckBox.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
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 LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
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 LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
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 LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
InlineFormattingContext.cpp LibWeb: Pass available inner space to inline-level SVG layout 2023-03-27 23:28:07 +02:00
InlineFormattingContext.h LibWeb: Convert InlineFormattingContext to new pixel units 2023-01-05 17:42:31 +01:00
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 LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
InlineNode.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
Label.cpp LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport 2023-02-28 12:21:56 +01:00
Label.h LibWeb+WebContent+headless-browser: Use CSSPixels for PageClient events 2022-12-10 12:03:19 +00:00
LabelableNode.cpp LibWeb: Move mouse event and label logic from layout to painting tree 2022-03-11 00:21:49 +01:00
LabelableNode.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
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 LibWeb: Convert InlineLevelIterator/LineBox/LineBuilder to new px units 2023-01-05 17:42:31 +01:00
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 LibWeb: Convert InlineLevelIterator/LineBox/LineBuilder to new px units 2023-01-05 17:42:31 +01:00
ListItemBox.cpp LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
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 LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
ListItemMarkerBox.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
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 LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
Progress.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
RadioButton.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
RadioButton.h LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
ReplacedBox.cpp LibWeb: Remove Layout::Node::set_inline() 2022-10-06 15:29:38 +02:00
ReplacedBox.h LibWeb: Convert Layout Boxes to new pixel units 2023-01-05 17:42:31 +01:00
SVGBox.cpp LibWeb: Make SVG <svg> elements behave as CSS replaced elements 2022-03-19 12:42:10 +01:00
SVGBox.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
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 LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
SVGGeometryBox.h LibWeb: Use static_cast in SVGGeometryBox::dom_node() 2023-03-11 10:46:26 +01:00
SVGGraphicsBox.cpp LibWeb: Let Paintable perform the painting 2022-03-11 00:21:49 +01:00
SVGGraphicsBox.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
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 LibWeb: Remove inheritance of TableBox from BlockContainer 2023-01-09 11:47:31 +01:00
TableBox.h LibWeb: Add Layout::Node::is_table() and make is<TableBox>() fast 2023-01-24 11:44:03 +01:00
TableCellBox.cpp LibWeb: Take rowspan into account while table formatting 2022-12-05 17:47:48 +01:00
TableCellBox.h LibWeb: Support display inline-table 2023-01-17 10:18:33 +01:00
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 Libraries: Use default constructors/destructors in LibWeb 2022-03-17 17:23:49 +00:00
TableRowBox.h LibWeb: Support display inline-table 2023-01-17 10:18:33 +01:00
TableRowGroupBox.cpp LibWeb: Remove inheritance of TableRowGroupBox from BlockContainer 2023-01-09 11:47:31 +01:00
TableRowGroupBox.h LibWeb: Remove inheritance of TableRowGroupBox from BlockContainer 2023-01-09 11:47:31 +01:00
TableWrapper.cpp LibWeb: Override width calculation for table wrappers 2023-01-14 19:22:08 +01:00
TableWrapper.h LibWeb: Override width calculation for table wrappers 2023-01-14 19:22:08 +01:00
TextNode.cpp LibWeb: Make the paint tree GC-allocated 2023-01-11 12:55:00 +01:00
TextNode.h LibWeb: Make a handful of layout node leaf classes final 2023-01-11 14:03:18 +01:00
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