31 lines
634 B
Rust
31 lines
634 B
Rust
use crate::prelude::*;
|
|
|
|
#[derive(Default)]
|
|
pub struct WidgetPtr {
|
|
pub inner: Option<WidgetId>,
|
|
}
|
|
|
|
impl Widget for WidgetPtr {
|
|
fn draw(&mut self, painter: &mut Painter) {
|
|
if let Some(id) = &self.inner {
|
|
painter.widget(id);
|
|
}
|
|
}
|
|
|
|
fn desired_width(&mut self, ctx: &mut SizeCtx) -> Len {
|
|
if let Some(id) = &self.inner {
|
|
ctx.width(id)
|
|
} else {
|
|
Len::ZERO
|
|
}
|
|
}
|
|
|
|
fn desired_height(&mut self, ctx: &mut SizeCtx) -> Len {
|
|
if let Some(id) = &self.inner {
|
|
ctx.height(id)
|
|
} else {
|
|
Len::ZERO
|
|
}
|
|
}
|
|
}
|