Dynamic flex size

This commit is contained in:
2025-11-01 13:30:41 +01:00
parent 2d41f3b50b
commit a2350f10f5
2 changed files with 8 additions and 3 deletions
+8 -2
View File
@@ -68,6 +68,7 @@ impl Element for FlexRow {
let mut scope = crate::render_scope::RenderScope::new();
scope.set_parent_transform(transform.clone());
transform.height = 0;
let mut v = 0;
let mut renderer = RowRenderer(&mut transform, self.gap, &mut v);
for widget in &self.children {
@@ -127,6 +128,7 @@ impl Element for FlexCol {
let mut scope = crate::render_scope::RenderScope::new();
scope.set_parent_transform(transform.clone());
transform.width = 0;
let mut v = 0;
let mut renderer = ColumnRenderer(&mut transform, self.gap, &mut v);
for widget in &self.children {
@@ -158,7 +160,7 @@ impl ElementRenderer for RowRenderer<'_> {
fn before_draw(&mut self, scope: &mut crate::prelude::RenderScope, _widget: &Arc<Widget>) {
let t = scope.get_transform_mut();
self.0.width = self.0.width.max(*self.2 + t.width + (t.px * 2));
self.0.height = self.0.height.max(t.height + (t.py * 2));
// self.0.height = self.0.height.max(t.height + (t.py * 2));
t.x += self.0.x;
t.y += self.0.y + *self.2;
@@ -166,13 +168,15 @@ impl ElementRenderer for RowRenderer<'_> {
t.px += self.0.px;
t.py += self.0.py;
self.0.height += t.height + (t.py * 2) + self.1;
}
}
impl ElementRenderer for ColumnRenderer<'_> {
fn before_draw(&mut self, scope: &mut crate::prelude::RenderScope, _widget: &Arc<Widget>) {
let t = scope.get_transform_mut();
self.0.width = self.0.width.max(*self.2 + t.width + (t.px * 2));
// self.0.width = self.0.width.max(*self.2 + t.width + (t.px * 2));
self.0.height = self.0.height.max(t.height + (t.py * 2));
t.x += self.0.x + *self.2;
@@ -181,5 +185,7 @@ impl ElementRenderer for ColumnRenderer<'_> {
t.px += self.0.px;
t.py += self.0.py;
self.0.width += t.width + (t.px * 2) + self.1;
}
}