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
-1
View File
@@ -70,7 +70,6 @@ pub fn app(screen: Arc<Screen>) -> Rsx {
Input { } Input { }
} }
@Transform::new().margin(0, 1);
FlexRow FlexRow
{ {
"Password" "Password"
+8 -2
View File
@@ -68,6 +68,7 @@ impl Element for FlexRow {
let mut scope = crate::render_scope::RenderScope::new(); let mut scope = crate::render_scope::RenderScope::new();
scope.set_parent_transform(transform.clone()); scope.set_parent_transform(transform.clone());
transform.height = 0;
let mut v = 0; let mut v = 0;
let mut renderer = RowRenderer(&mut transform, self.gap, &mut v); let mut renderer = RowRenderer(&mut transform, self.gap, &mut v);
for widget in &self.children { for widget in &self.children {
@@ -127,6 +128,7 @@ impl Element for FlexCol {
let mut scope = crate::render_scope::RenderScope::new(); let mut scope = crate::render_scope::RenderScope::new();
scope.set_parent_transform(transform.clone()); scope.set_parent_transform(transform.clone());
transform.width = 0;
let mut v = 0; let mut v = 0;
let mut renderer = ColumnRenderer(&mut transform, self.gap, &mut v); let mut renderer = ColumnRenderer(&mut transform, self.gap, &mut v);
for widget in &self.children { 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>) { fn before_draw(&mut self, scope: &mut crate::prelude::RenderScope, _widget: &Arc<Widget>) {
let t = scope.get_transform_mut(); 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)); // self.0.height = self.0.height.max(t.height + (t.py * 2));
t.x += self.0.x; t.x += self.0.x;
t.y += self.0.y + *self.2; t.y += self.0.y + *self.2;
@@ -166,13 +168,15 @@ impl ElementRenderer for RowRenderer<'_> {
t.px += self.0.px; t.px += self.0.px;
t.py += self.0.py; t.py += self.0.py;
self.0.height += t.height + (t.py * 2) + self.1;
} }
} }
impl ElementRenderer for ColumnRenderer<'_> { impl ElementRenderer for ColumnRenderer<'_> {
fn before_draw(&mut self, scope: &mut crate::prelude::RenderScope, _widget: &Arc<Widget>) { fn before_draw(&mut self, scope: &mut crate::prelude::RenderScope, _widget: &Arc<Widget>) {
let t = scope.get_transform_mut(); 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)); self.0.height = self.0.height.max(t.height + (t.py * 2));
t.x += self.0.x + *self.2; t.x += self.0.x + *self.2;
@@ -181,5 +185,7 @@ impl ElementRenderer for ColumnRenderer<'_> {
t.px += self.0.px; t.px += self.0.px;
t.py += self.0.py; t.py += self.0.py;
self.0.width += t.width + (t.px * 2) + self.1;
} }
} }