diff --git a/crates/tek_core/src/tui/tui_layout.rs b/crates/tek_core/src/tui/tui_layout.rs index fffcebb3..e1a3cf9c 100644 --- a/crates/tek_core/src/tui/tui_layout.rs +++ b/crates/tek_core/src/tui/tui_layout.rs @@ -8,62 +8,72 @@ impl Rectangle for Rect { } impl Render for Min<::Unit, R> where R: Render + Layout { - fn render (&self, engine: &mut Tui) -> Perhaps { - self.layout(engine.area())? - .map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h())) - .map(|engine|engine.render(match self { + fn render (&self, to: &mut Tui) -> Perhaps { + self.layout(to.area())? + .map(|area|to.with_area(area.x(), area.y(), area.w(), area.h())) + .map(|to|match self { Self::W(_, inner) => inner, Self::H(_, inner) => inner, Self::WH(_, _, inner) => inner, - })) + }.render(to)) + .transpose() + .map(|x|x.flatten()) } } impl Render for Max<::Unit, R> where R: Render + Layout { - fn render (&self, engine: &mut Tui) -> Perhaps { - self.layout(engine.area())? - .map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h())) - .map(|engine|engine.render(match self { + fn render (&self, to: &mut Tui) -> Perhaps { + self.layout(to.area())? + .map(|area|to.with_area(area.x(), area.y(), area.w(), area.h())) + .map(|to|match self { Self::W(_, inner) => inner, Self::H(_, inner) => inner, Self::WH(_, _, inner) => inner, - })) + }.render(to)) + .transpose() + .map(|x|x.flatten()) } } impl Render for Inset<::Unit, R> where R: Render + Layout { - fn render (&self, engine: &mut Tui) -> Perhaps { - self.layout(engine.area())? - .map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h())) - .map(|engine|engine.render(match self { + fn render (&self, to: &mut Tui) -> Perhaps { + self.layout(to.area())? + .map(|area|to.with_area(area.x(), area.y(), area.w(), area.h())) + .map(|to|match self { Self::W(_, inner) => inner, Self::H(_, inner) => inner, Self::WH(_, _, inner) => inner, - })) + }.render(to)) + .transpose() + .map(|x|x.flatten()) } } impl Render for Outset<::Unit, R> where R: Render + Layout { - fn render (&self, engine: &mut Tui) -> Perhaps { - self.layout(engine.area())? - .map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h())) - .map(|engine|engine.render(match self { + fn render (&self, to: &mut Tui) -> Perhaps { + self.layout(to.area())? + .map(|area|to.with_area(area.x(), area.y(), area.w(), area.h())) + .map(|to|match self { Self::W(_, inner) => inner, Self::H(_, inner) => inner, Self::WH(_, _, inner) => inner, - })) + }.render(to)) + .transpose() + .map(|x|x.flatten()) } } impl Render for Offset<::Unit, R> where R: Render + Layout { - fn render (&self, engine: &mut Tui) -> Perhaps { - self.layout(engine.area())? - .map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h())) - .map(|engine|engine.render(match self { + fn render (&self, to: &mut Tui) -> Perhaps { + self.layout(to.area())? + .map(|area|to.with_area(area.x(), area.y(), area.w(), area.h())) + .map(|to|match self { Self::X(_, inner) => inner, Self::Y(_, inner) => inner, Self::XY(_, _, inner) => inner, - })) + }.render(to)) + .transpose() + .map(|x|x.flatten()) } }