summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2019-11-21 16:14:26 +0100
committerLaurenz <laurmaedje@gmail.com>2019-11-21 16:14:26 +0100
commit131e81baaf668f76a7dd1d39a0d88afd5e4582ec (patch)
treee459fcbc78edd4768ff0f3dcd2da0a71cb1b4848 /src
parent863a1a7a00a67185660a14fb216e615db2b3eead (diff)
Fix flex primary expansion 🚧
Diffstat (limited to 'src')
-rw-r--r--src/layout/flex.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/layout/flex.rs b/src/layout/flex.rs
index 2f219640..1d9f044d 100644
--- a/src/layout/flex.rs
+++ b/src/layout/flex.rs
@@ -183,11 +183,14 @@ impl FlexLayouter {
fn finish_line(&mut self) -> LayoutResult<Size2D> {
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<()> {