From d4016168b2fbc0112e2d83b1f9e9899a512f14a8 Mon Sep 17 00:00:00 2001 From: ldm0 Date: Sun, 18 Oct 2026 03:44:31 +0800 Subject: [PATCH] fix(layout): apply inline-block intrinsic maximum widths Constrain auto-width inline-blocks by max-width:min-content while preserving intrinsic minimums, minimum precedence and automatic growth. Pin the separate Taffy sizing fixes, including the block-root auto-fill control. MOL-466: Taffy a34a7a82e5144b311b2fcb34feeb8412db9d0117. Browser before/after probes retained. Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast: 20278 passed,18 skipped. --- Cargo.lock | 2 +- Cargo.toml | 2 +- moli/tests/fetch_cli/layout_regressions.rs | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9690e3ffe7..0f0fac1903 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5542,7 +5542,7 @@ dependencies = [ [[package]] name = "taffy" version = "0.13.0" -source = "git+https://github.com/ldm0/taffy?rev=4a618c7b6b7f9c3fbd8b8b0eaf9918ebd2cf9969#4a618c7b6b7f9c3fbd8b8b0eaf9918ebd2cf9969" +source = "git+https://github.com/ldm0/taffy?rev=a34a7a82e5144b311b2fcb34feeb8412db9d0117#a34a7a82e5144b311b2fcb34feeb8412db9d0117" dependencies = [ "arrayvec", "serde", diff --git a/Cargo.toml b/Cargo.toml index 98836bdfaa..ad9edf76eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -117,7 +117,7 @@ stylo_dom = { git = "https://github.com/lexmount/stylo", rev = "0c7e8baf63b6714e stylo_static_prefs = { git = "https://github.com/lexmount/stylo", rev = "0c7e8baf63b6714e7614834fadbc09710f3c3d27" } stylo_traits = { git = "https://github.com/lexmount/stylo", rev = "0c7e8baf63b6714e7614834fadbc09710f3c3d27" } svgtypes = { git = "https://github.com/lexmount/svgtypes", branch = "moli" } -taffy = { git = "https://github.com/ldm0/taffy", rev = "4a618c7b6b7f9c3fbd8b8b0eaf9918ebd2cf9969" } +taffy = { git = "https://github.com/ldm0/taffy", rev = "a34a7a82e5144b311b2fcb34feeb8412db9d0117" } [workspace.lints.clippy] disallowed_methods = "deny" diff --git a/moli/tests/fetch_cli/layout_regressions.rs b/moli/tests/fetch_cli/layout_regressions.rs index 16088d49e6..7f438ef1a9 100644 --- a/moli/tests/fetch_cli/layout_regressions.rs +++ b/moli/tests/fetch_cli/layout_regressions.rs @@ -136,3 +136,21 @@ fn auto_grid_tracks_honor_intrinsic_item_minima_before_measuring_row_height() -> } Ok(()) } + +#[test] +fn inline_block_intrinsic_maximum_constrains_auto_width_and_preserves_minimum_sizing() -> Result<()> +{ + let html = probe_font_document( + "
aaaa bbbbb ccc
aaaa bbbbb ccc
aaaa bbbbb ccc
aaaa bbbbb ccc
", + ); + let value = run_layout(&html, GEOMETRY, true)?; + for id in ["maximum", "minimum"] { + assert_dimension(&value, id, "width", 60.0); + assert_dimension(&value, id, "height", 60.0); + } + for id in ["auto-minimum", "minimum-wins"] { + assert_dimension(&value, id, "width", 168.0); + assert_dimension(&value, id, "height", 20.0); + } + Ok(()) +}