tuigui/widgets/
float_container.rsuse crate::preludes::widget_creation::*;
#[derive(Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct FloatContainer<W: Widget> {
pub widget: W,
pub widget_transform: Transform,
widget_data: WidgetData,
}
impl<W: Widget> FloatContainer<W> {
pub fn new(widget_transform: Transform, widget: W) -> Self {
Self {
widget,
widget_transform,
widget_data: WidgetData::new(),
}
}
}
impl<W: Widget> Widget for FloatContainer<W> {
fn draw(&mut self, canvas: &mut Canvas, state_frame: &EventStateFrame) {
let mut inner = canvas.new_child(self.widget_transform);
inner.transform.size = self.widget.widget_info().size_info.correct_size(inner.transform.size);
self.widget.draw(&mut inner, state_frame);
}
fn widget_info(&self) -> WidgetInfo {
return self.widget.widget_info();
}
fn widget_data(&mut self) -> &mut WidgetData {
return &mut self.widget_data;
}
}