🐛 Fix problem with margin in flex layout

This commit is contained in:
alonso.torres 2025-06-20 12:38:47 +02:00 committed by Alonso Torres
parent ac6a814026
commit afec3b9bc1

View file

@ -541,23 +541,29 @@ fn child_position(
child_axis: &ChildAxis, child_axis: &ChildAxis,
track: &TrackData, track: &TrackData,
) -> Point { ) -> Point {
let across_position = match child.layout_item { let across_position = match child.layout_item {
Some(LayoutItem { Some(LayoutItem {
align_self: Some(align_self), align_self: Some(align_self),
.. ..
}) => match align_self { }) => match align_self {
AlignSelf::Center => (track.across_size - child_axis.across_size) / 2.0, AlignSelf::Center => (track.across_size - child_axis.across_size) / 2.0,
AlignSelf::End => track.across_size - child_axis.across_size - child_axis.margin_across_end, AlignSelf::End => {
track.across_size - child_axis.across_size - child_axis.margin_across_end
}
_ => child_axis.margin_across_start, _ => child_axis.margin_across_start,
}, },
_ => match layout_data.align_items { _ => match layout_data.align_items {
AlignItems::Center => (track.across_size - child_axis.across_size) / 2.0, AlignItems::Center => (track.across_size - child_axis.across_size) / 2.0,
AlignItems::End => track.across_size - child_axis.across_size - child_axis.margin_across_end, AlignItems::End => {
track.across_size - child_axis.across_size - child_axis.margin_across_end
}
_ => child_axis.margin_across_start, _ => child_axis.margin_across_start,
}, },
}; };
shape_anchor + layout_axis.main_v * child_axis.margin_main_start + layout_axis.across_v * across_position shape_anchor
+ layout_axis.main_v * child_axis.margin_main_start
+ layout_axis.across_v * across_position
} }
pub fn reflow_flex_layout( pub fn reflow_flex_layout(