Added after render and render on extension with child handlers #26

This commit is contained in:
2025-08-04 05:58:11 -05:00
parent 62e0c1eac1
commit ca4ee54e9d
12 changed files with 108 additions and 55 deletions
+28 -8
View File
@@ -38,12 +38,20 @@ impl FlexCol {
}
impl Element for FlexRow {
fn render(&mut self, scope: &mut crate::render_scope::RenderScope) {
fn render(
&mut self,
scope: &mut crate::render_scope::RenderScope,
_: &crate::extensions::Context,
) {
let (width, height) = scope.get_size_or(self.size.0, self.size.1);
scope.use_area(width, height);
}
fn after_render(&mut self, scope: &mut crate::render_scope::RenderScope) {
fn after_render(
&mut self,
scope: &mut crate::render_scope::RenderScope,
ctx: &crate::extensions::Context,
) {
let mut transform = scope.get_transform().clone();
let (w, h) = scope.get_parent_size();
scope.set_parent_size(transform.width, transform.height);
@@ -62,7 +70,8 @@ impl Element for FlexRow {
if let Some(t) = elem.get() {
scope.set_transform(&t);
}
elem.get_elem().render(scope);
elem.get_elem().render(scope, ctx);
ctx.render(elem, scope);
if let Some(t) = elem.get() {
scope.set_transform(&t);
}
@@ -77,7 +86,8 @@ impl Element for FlexRow {
scope.draw();
elem.get_elem().after_render(scope);
elem.get_elem().after_render(scope, ctx);
ctx.after_render(elem, scope);
}
scope.set_parent_size(w, h);
self.size = (transform.width, transform.height);
@@ -98,12 +108,20 @@ impl Element for FlexRow {
}
impl Element for FlexCol {
fn render(&mut self, scope: &mut crate::render_scope::RenderScope) {
fn render(
&mut self,
scope: &mut crate::render_scope::RenderScope,
_: &crate::extensions::Context,
) {
let (width, height) = scope.get_size_or(self.size.0, self.size.1);
scope.use_area(width, height);
}
fn after_render(&mut self, scope: &mut crate::render_scope::RenderScope) {
fn after_render(
&mut self,
scope: &mut crate::render_scope::RenderScope,
ctx: &crate::extensions::Context,
) {
let mut transform = scope.get_transform().clone();
let (w, h) = scope.get_parent_size();
scope.set_parent_size(transform.width, transform.height);
@@ -122,7 +140,8 @@ impl Element for FlexCol {
if let Some(t) = elem.get() {
scope.set_transform(&t);
}
elem.get_elem().render(scope);
elem.get_elem().render(scope, ctx);
ctx.render(elem, scope);
if let Some(t) = elem.get() {
scope.set_transform(&t);
}
@@ -137,7 +156,8 @@ impl Element for FlexCol {
scope.draw();
elem.get_elem().after_render(scope);
elem.get_elem().after_render(scope, ctx);
ctx.after_render(elem, scope);
}
scope.set_parent_size(w, h);
self.size = (transform.width, transform.height);