servo/components/layout
Oriol Brufau 1cceb5f6a0
layout: Inform child layout about final block size (#36980)
Before this patch it wasn't possibly to simultaneously support intrinsic
min/max sizes and content alignment in the block axis. For example,
block containers only support the former, and flex containers only the
latter.

The reason is that the final block size was decided by the parent
formatting context *after* performing layout, while content alignment is
performed *during* layout.

To address the problem, this introduces the struct `LazySize`, which
contains the data to resolve the final size, except for the intrinsic
size. Thus the parent formatting context can first create a `LazySize`,
then pass it to the child layout so that (if necessary) it can compute
the final size once the intrinsic one is known, and after layout the
parent formatting context uses it to actually size the child.

This PR just provides the functionality that will be used by follow-ups,
but at this point no layout is using the `LazySize` provided by the
parent, so there shouldn't be any behavior change yet.

Testing: Unnecessary (no behavior change)
This is part of #36981 and #36982

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-05-14 20:35:49 +00:00
..
display_list layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
flexbox layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
flow layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
fragment_tree layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
stylesheets Embed user agent stylesheets and media control resouces in libservo (#36803) 2025-05-04 18:48:09 +00:00
table layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
taffy layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
tests layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
Cargo.toml layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
cell.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
construct_modern.rs layout: Share styles to inline box children via SharedInlineStyles (#36896) 2025-05-12 09:38:50 +00:00
context.rs devtools: Allow highlighting elements from the inspector (#35822) 2025-05-05 10:10:25 +00:00
dom.rs layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
dom_traversal.rs layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
formatting_contexts.rs layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
geom.rs layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
layout_box_base.rs layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
layout_impl.rs layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
lib.rs layout: Share styles to inline box children via SharedInlineStyles (#36896) 2025-05-12 09:38:50 +00:00
lists.rs layout: Use ServoLayoutNode directly instead of a generic impl (#36876) 2025-05-06 14:27:51 +00:00
positioned.rs layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
query.rs layout: Use ServoLayoutNode directly instead of a generic impl (#36876) 2025-05-06 14:27:51 +00:00
quotes.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
replaced.rs layout: Use ServoLayoutNode directly instead of a generic impl (#36876) 2025-05-06 14:27:51 +00:00
sizing.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
style_ext.rs Upgrade Stylo to 2025-05-01 (#36835) 2025-05-05 14:08:49 +00:00
traversal.rs layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00