ladybird/Libraries/LibWeb/Layout
Andreas Kling 171dfa4db8 LibWeb: Use re-solve pattern for abspos height min/max constraints
The CSS spec (CSS2 10.6.4 / CSS Position 5.3) says:
1. Compute tentative height without min/max-height
2. If result > max-height, re-solve with max-height as height
3. If result < min-height, re-solve with min-height as height

We already implemented this correctly for the width axis, but the
height axis tried to bake min/max constraints into the solve_for
lambda. This corrupted the constraint equation when solving for
height with auto height + min-height, since the height term couldn't
cancel itself out (it was inflated to min-height on subtraction but
stayed 0 on addition).

This caused abspos elements with top+bottom insets and min-height to
incorrectly get the min-height as their height, even when the
containing block was tall enough for a larger height.
2026-02-10 11:58:15 +01:00
..
AudioBox.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
AudioBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
AvailableSpace.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AvailableSpace.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
BlockContainer.cpp LibWeb: Add missing type-isolating GC allocators for some types 2026-01-18 10:10:04 +01:00
BlockContainer.h LibWeb: Add missing type-isolating GC allocators for some types 2026-01-18 10:10:04 +01:00
BlockFormattingContext.cpp LibWeb: Remove Document.h include from Layout/Viewport.h 2026-02-08 18:51:13 +01:00
BlockFormattingContext.h LibWeb: Unregister block container y-position update callback 2026-02-07 12:21:16 +01:00
Box.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
Box.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
BreakNode.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
BreakNode.h Everywhere: Change west consts caught by clang-format-21 to east consts 2025-08-29 18:18:55 +01:00
CanvasBox.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
CanvasBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
CheckBox.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
CheckBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
FieldSetBox.cpp Meta: Disallow links to single-page HTML spec 2025-02-05 16:04:50 -07:00
FieldSetBox.h LibWeb: Remove Document.h include from Layout/Node.h 2026-02-08 18:51:13 +01:00
FlexFormattingContext.cpp LibWeb: Definite size overrides intrinsic aspect ratio contribution 2026-02-02 14:36:49 +00:00
FlexFormattingContext.h LibWeb: Mark flex item main size definite if resolved from aspect-ratio 2025-11-07 16:42:32 +01:00
FormAssociatedLabelableNode.h LibWeb: Replace usages of dynamic_cast with as and as_if 2025-08-22 20:26:09 +02:00
FormattingContext.cpp LibWeb: Use re-solve pattern for abspos height min/max constraints 2026-02-10 11:58:15 +01:00
FormattingContext.h LibWeb: Add debug tracing for FormattingContext::run() calls 2026-01-09 08:12:21 +01:00
GridFormattingContext.cpp LibWeb: Fix fit-content() row clamping with indefinite available height 2026-02-02 20:33:05 +01:00
GridFormattingContext.h LibWeb: Make LengthBox hold LengthPercentageOrAuto 2025-09-04 13:31:24 +01:00
ImageBox.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
ImageBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
ImageProvider.cpp Everywhere: Avoid large rebuilds when editing (Immutable)Bitmap headers 2025-11-28 18:32:48 +01:00
ImageProvider.h LibWeb: Add ImageProvider virtual to access the DecodedImageData 2025-11-05 09:11:49 +01:00
InlineFormattingContext.cpp LibWeb: Keep track of trailing whitespace for wrapped lines 2026-02-06 10:47:50 +00:00
InlineFormattingContext.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
InlineLevelIterator.cpp LibWeb: Remove Document.h include from SVGElement.h 2026-02-08 18:51:13 +01:00
InlineLevelIterator.h LibWeb: Pre-generate items in InlineLevelIterator 2026-01-11 11:10:19 +01:00
InlineNode.cpp LibWeb: Split PaintableWithLines from PaintableBox 2026-01-12 11:00:14 +00:00
InlineNode.h LibWeb: Add fast_is<T> optimization for Layout::InlineNode 2025-09-22 15:00:50 +02:00
LabelableNode.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
LabelableNode.h LibWeb: Allow Layout::ImageBox to be anonymous 2025-07-28 22:46:27 +02:00
LayoutState.cpp LibWeb: Implement partial SVG relayout 2026-02-09 03:02:49 +01:00
LayoutState.h LibWeb: Implement partial SVG relayout 2026-02-09 03:02:49 +01:00
LegendBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
LegendBox.h LibWeb: Remove Document.h include from Layout/Node.h 2026-02-08 18:51:13 +01:00
LineBox.cpp LibWeb: Remove Document.h include from Layout/Node.h 2026-02-08 18:51:13 +01:00
LineBox.h LibWeb: Make fragment start/length size_t instead of int 2025-06-13 15:08:26 +02:00
LineBoxFragment.cpp LibWeb: Store correct text offsets in PaintableFragment 2025-09-12 15:34:09 -04:00
LineBoxFragment.h LibWeb: Keep track of trailing whitespace for wrapped lines 2026-02-06 10:47:50 +00:00
LineBuilder.cpp LibWeb: Keep track of trailing whitespace for wrapped lines 2026-02-06 10:47:50 +00:00
LineBuilder.h LibWeb: Keep track of trailing whitespace for wrapped lines 2026-02-06 10:47:50 +00:00
ListItemBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
ListItemBox.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
ListItemMarkerBox.cpp LibWeb: Remove Document.h include from Layout/Node.h 2026-02-08 18:51:13 +01:00
ListItemMarkerBox.h LibWeb: Improve graphical list item marker positioning 2025-07-17 09:35:09 +01:00
NavigableContainerViewport.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
NavigableContainerViewport.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
Node.cpp LibWeb: Implement partial SVG relayout 2026-02-09 03:02:49 +01:00
Node.h LibWeb: Remove Document.h include from Layout/Node.h 2026-02-08 18:51:13 +01:00
RadioButton.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
RadioButton.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
ReplacedBox.cpp LibWeb: Allow Layout::ImageBox to be anonymous 2025-07-28 22:46:27 +02:00
ReplacedBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
SVGBox.cpp LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGBox.h LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGClipBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGClipBox.h LibWeb: Add fast_is<T> for hotly dynamic_cast'ed things on imdb.com 2025-09-25 21:42:52 +02:00
SVGForeignObjectBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGForeignObjectBox.h LibWeb: Make SVG foreignObject establish a new stacking context 2025-07-09 14:36:08 +02:00
SVGFormattingContext.cpp LibWeb: Remove Document.h include from Layout/Viewport.h 2026-02-08 18:51:13 +01:00
SVGFormattingContext.h LibWeb: Compute SVG mask/clip transforms using layout tree hierarchy 2026-02-05 09:00:56 +01:00
SVGGeometryBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGGeometryBox.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGGraphicsBox.cpp LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGGraphicsBox.h LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGImageBox.cpp LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGImageBox.h LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGMaskBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGMaskBox.h AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
SVGSVGBox.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
SVGSVGBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
SVGTextBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGTextBox.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGTextPathBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGTextPathBox.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
TableFormattingContext.cpp LibWeb: Distribute colspan cell width equally when baseline is zero 2026-02-06 11:37:14 +00:00
TableFormattingContext.h LibWeb: Constrain table caption available space to table's border-box 2026-02-03 14:47:51 +01:00
TableGrid.cpp LibWeb/Layout: Spec-comment Table "algorithm for processing rows" 2025-11-30 11:48:14 +01:00
TableGrid.h LibWeb: Avoid having the same code in two files 2025-12-24 14:10:27 +01:00
TableWrapper.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
TableWrapper.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
TextAreaBox.cpp LibWeb: Implement auto_content_box_size for textarea and input 2026-02-02 14:36:49 +00:00
TextAreaBox.h LibWeb: Implement auto_content_box_size for textarea and input 2026-02-02 14:36:49 +00:00
TextInputBox.cpp LibWeb: Implement auto_content_box_size for textarea and input 2026-02-02 14:36:49 +00:00
TextInputBox.h LibWeb: Implement auto_content_box_size for textarea and input 2026-02-02 14:36:49 +00:00
TextNode.cpp LibWeb: Add ASCII fast path for bidi class lookups in text layout 2026-01-11 11:10:19 +01:00
TextNode.h LibWeb: Prefer non-emoji font when deciding width of space between words 2025-11-06 23:42:01 +01:00
TreeBuilder.cpp LibWeb: Do not generate marker boxes for list-style-type: none 2026-01-26 16:41:42 +01:00
TreeBuilder.h LibWeb/Layout: Replace existing ::backdrop layout nodes when necessary 2026-01-22 13:52:31 +00:00
VideoBox.cpp LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
VideoBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
Viewport.cpp LibWeb: Remove Document.h include from Layout/Viewport.h 2026-02-08 18:51:13 +01:00
Viewport.h LibWeb: Remove Document.h include from Layout/Viewport.h 2026-02-08 18:51:13 +01:00