mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
generalize Layers
This commit is contained in:
parent
35b37e3e3a
commit
f7b2134310
3 changed files with 53 additions and 33 deletions
|
|
@ -416,31 +416,31 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<F> Widget for Layers<Tui, F>
|
||||
where
|
||||
F: Send + Sync + Fn(&mut dyn FnMut(&dyn Widget<Engine = Tui>)->Usually<()>)->Usually<()>
|
||||
{
|
||||
type Engine = Tui;
|
||||
fn layout (&self, area: [u16;2]) -> Perhaps<[u16;2]> {
|
||||
let mut w = 0;
|
||||
let mut h = 0;
|
||||
(self.0)(&mut |layer| {
|
||||
if let Some(layer_area) = layer.layout(area)? {
|
||||
w = w.max(layer_area.w());
|
||||
h = h.max(layer_area.h());
|
||||
}
|
||||
Ok(())
|
||||
})?;
|
||||
Ok(Some([w, h]))
|
||||
}
|
||||
fn render (&self, to: &mut TuiOutput) -> Usually<()> {
|
||||
if let Some(size) = self.layout(to.area().wh())? {
|
||||
(self.0)(&mut |layer|to.render_in(to.area().clip(size), &layer))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
//impl<F> Widget for Layers<Tui, F>
|
||||
//where
|
||||
//F: Send + Sync + Fn(&mut dyn FnMut(&dyn Widget<Engine = Tui>)->Usually<()>)->Usually<()>
|
||||
//{
|
||||
//type Engine = Tui;
|
||||
//fn layout (&self, area: [u16;2]) -> Perhaps<[u16;2]> {
|
||||
//let mut w = 0;
|
||||
//let mut h = 0;
|
||||
//(self.0)(&mut |layer| {
|
||||
//if let Some(layer_area) = layer.layout(area)? {
|
||||
//w = w.max(layer_area.w());
|
||||
//h = h.max(layer_area.h());
|
||||
//}
|
||||
//Ok(())
|
||||
//})?;
|
||||
//Ok(Some([w, h]))
|
||||
//}
|
||||
//fn render (&self, to: &mut TuiOutput) -> Usually<()> {
|
||||
//if let Some(size) = self.layout(to.area().wh())? {
|
||||
//(self.0)(&mut |layer|to.render_in(to.area().clip(size), &layer))
|
||||
//} else {
|
||||
//Ok(())
|
||||
//}
|
||||
//}
|
||||
//}
|
||||
|
||||
pub struct Border<S: BorderStyle>(pub S);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue