Dynamic flex size
This commit is contained in:
@@ -70,7 +70,6 @@ pub fn app(screen: Arc<Screen>) -> Rsx {
|
|||||||
Input { }
|
Input { }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transform::new().margin(0, 1);
|
|
||||||
FlexRow
|
FlexRow
|
||||||
{
|
{
|
||||||
"Password"
|
"Password"
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user