tawasuyu

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5544Rust 88Markdown 11TOML 91926 Sutichaykuna

Flexbox: don't apply cross-axis stretch alignment to children with auto margins (#861)

Signed-off-by: Nico Burns <nico@nicoburns.com>

8205039e5d4dac2744142dd5b168d61cdda5b032 · ruwaq Nico Burns · (1 wata ñawpaq) · tayta 9be47b91c · kay commitpi sach'ata qhaway

Semántico sayk'uy · 1

src/compute/flexbox.rs

1 qillqakuna · +5 −1

diff --git a/src/compute/flexbox.rs b/src/compute/flexbox.rs
index e5c4aef8a..384e9f530 100644
--- a/src/compute/flexbox.rs
+++ b/src/compute/flexbox.rs
@@ -676,7 +676,11 @@ fn determine_flex_base_size(
         // Known dimensions for child sizing
         let child_known_dimensions = {
             let mut ckd = child.size.with_main(dir, None);
-            if child.align_self == AlignSelf::Stretch && ckd.cross(dir).is_none() {
+            if child.align_self == AlignSelf::Stretch
+                && !child.margin_is_auto.cross_start(constants.dir)
+                && !child.margin_is_auto.cross_end(constants.dir)
+                && ckd.cross(dir).is_none()
+            {
                 ckd.set_cross(
                     dir,
                     cross_axis_available_space.into_option().maybe_sub(child.margin.cross_axis_sum(dir)),