From 131e81baaf668f76a7dd1d39a0d88afd5e4582ec Mon Sep 17 00:00:00 2001 From: Laurenz Date: Thu, 21 Nov 2019 16:14:26 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20flex=20primary=20expansion=20=F0=9F=9A=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/flex.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/layout/flex.rs b/src/layout/flex.rs index 2f219640f..1d9f044d6 100644 --- a/src/layout/flex.rs +++ b/src/layout/flex.rs @@ -183,11 +183,14 @@ impl FlexLayouter { fn finish_line(&mut self) -> LayoutResult { self.finish_partial_line(); + if self.axes.primary.needs_expansion() { + self.line.combined_dimensions.x = self.line.usable; + } + self.stack.add(Layout { - dimensions: self.axes.specialize(Size2D { - x: self.line.usable, - y: self.line.combined_dimensions.y + self.flex_spacing, - }), + dimensions: self.axes.specialize( + self.line.combined_dimensions+ Size2D::with_y(self.flex_spacing) + ), actions: self.line.actions.to_vec(), debug_render: false, })?; @@ -221,8 +224,13 @@ impl FlexLayouter { self.line.actions.add_layout(pos, layout); } - self.line.combined_dimensions.x = anchor + factor * self.part.dimensions.x; - self.line.combined_dimensions.y.max_eq(self.part.dimensions.x); + self.line.combined_dimensions.x = match self.axes.primary.alignment { + Alignment::Origin => self.part.dimensions.x, + Alignment::Center => self.part.usable / 2 + self.part.dimensions.x / 2, + Alignment::End => self.part.usable, + }; + + self.line.combined_dimensions.y.max_eq(self.part.dimensions.y); } fn layout_box(&mut self, boxed: Layout) -> LayoutResult<()> {