Grid: only stretch auto tracks if content-alignment is stretch (#783)
Signed-off-by: Nico Burns <nico@nicoburns.com>
d19b5f51550708dc5f634c65f17a07d98179e37c · ruwaq Nico Burns · (1 wata ñawpaq) · tayta e353c1415 · kay commitpi sach'ata qhaway
Semántico sayk'uy · 2
src/compute/grid/track_sizing.rs
diff --git a/src/compute/grid/mod.rs b/src/compute/grid/mod.rs
index a9c46d449..8d1cc9d32 100644
--- a/src/compute/grid/mod.rs
+++ b/src/compute/grid/mod.rs
@@ -247,6 +247,7 @@ pub fn compute_grid_layout<Tree: LayoutGridContainer>(
AbstractAxis::Inline,
min_size.get(AbstractAxis::Inline),
max_size.get(AbstractAxis::Inline),
+ justify_content,
align_content,
available_grid_space,
inner_node_size,
@@ -269,6 +270,7 @@ pub fn compute_grid_layout<Tree: LayoutGridContainer>(
AbstractAxis::Block,
min_size.get(AbstractAxis::Block),
max_size.get(AbstractAxis::Block),
+ align_content,
justify_content,
available_grid_space,
inner_node_size,
@@ -385,6 +387,7 @@ pub fn compute_grid_layout<Tree: LayoutGridContainer>(
AbstractAxis::Inline,
min_size.get(AbstractAxis::Inline),
max_size.get(AbstractAxis::Inline),
+ justify_content,
align_content,
available_grid_space,
inner_node_size,
@@ -444,6 +447,7 @@ pub fn compute_grid_layout<Tree: LayoutGridContainer>(
AbstractAxis::Block,
min_size.get(AbstractAxis::Block),
max_size.get(AbstractAxis::Block),
+ align_content,
justify_content,
available_grid_space,
inner_node_size,
diff --git a/src/compute/grid/track_sizing.rs b/src/compute/grid/track_sizing.rs
index bf95772b7..a9c18b552 100644
--- a/src/compute/grid/track_sizing.rs
+++ b/src/compute/grid/track_sizing.rs
@@ -271,6 +271,7 @@ pub(super) fn track_sizing_algorithm<Tree: LayoutPartialTree>(
axis: AbstractAxis,
axis_min_size: Option<f32>,
axis_max_size: Option<f32>,
+ axis_alignment: AlignContent,
other_axis_alignment: AlignContent,
available_grid_space: Size<AvailableSpace>,
inner_node_size: Size<Option<f32>>,
@@ -357,7 +358,9 @@ pub(super) fn track_sizing_algorithm<Tree: LayoutPartialTree>(
// 11.8. Stretch auto Tracks
// This step expands tracks that have an auto max track sizing function by dividing any remaining positive, definite free space equally amongst them.
- stretch_auto_tracks(axis_tracks, axis_min_size, axis_available_space_for_expansion);
+ if axis_alignment == AlignContent::Stretch {
+ stretch_auto_tracks(axis_tracks, axis_min_size, axis_available_space_for_expansion);
+ }
}
/// Whether it is a minimum or maximum size's space being distributed