diff --git a/src/core/mod.rs b/src/core/mod.rs index 9caa8b2..9b86230 100644 --- a/src/core/mod.rs +++ b/src/core/mod.rs @@ -1,6 +1,7 @@ mod image; mod mask; mod position; +mod ptr; mod rect; mod sense; mod text; @@ -9,6 +10,7 @@ mod trait_fns; pub use image::*; pub use mask::*; pub use position::*; +pub use ptr::*; pub use rect::*; pub use sense::*; pub use text::*; diff --git a/src/core/ptr.rs b/src/core/ptr.rs new file mode 100644 index 0000000..ed806e5 --- /dev/null +++ b/src/core/ptr.rs @@ -0,0 +1,22 @@ +use crate::prelude::*; + +#[derive(Default)] +pub struct WidgetPtr { + pub inner: Option, +} + +impl Widget for WidgetPtr { + fn draw(&mut self, painter: &mut Painter) { + if let Some(id) = &self.inner { + painter.widget(id); + } + } + + fn desired_size(&mut self, ctx: &mut SizeCtx) -> Size { + if let Some(id) = &self.inner { + ctx.size(id) + } else { + Size::ZERO + } + } +}