1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
use super::*; pub struct Null<E> where E: Env { id: E::WidgetID, pub size: ESize<E>, pub style: Vec<StdVerb>, pub border: Option<Border>, } impl<E> Null<E> where E: Env { pub fn new(id: E::WidgetID) -> Self { Self { id, size: Size::empty().into(), style: vec![], border: None, } } pub fn with_size(mut self, s: ESize<E>) -> Self { self.size = s; self } } impl<'w,E> Widget<'w,E> for Null<E> where E: Env, ERenderer<E>: RenderStdWidgets<E>, ESVariant<E>: StyleVariantSupport<StdVerb>, { fn id(&self) -> E::WidgetID { self.id.clone() } fn render(&self, _: Link<E>, r: &mut RenderLink<E>) -> bool { r.fill_rect(); true } fn event(&self, _: Link<E>, _: (EEvent<E>,&Bounds,u64)) { } fn size(&self, _: Link<E>) -> ESize<E> { self.size.clone() } fn childs(&self) -> usize { 0 } fn childs_ref<'s>(&'s self) -> Vec<Resolvable<'s,E>> where 'w: 's { vec![] } fn into_childs(self: Box<Self>) -> Vec<Resolvable<'w,E>> { vec![] } fn _trace_bounds(&self, _: Link<E>, _: usize, _: &Bounds, _: bool) -> Result<Bounds,()> { Err(()) } fn focusable(&self) -> bool { false } fn border(&self, b: &mut Border) { if let Some(senf) = &self.border { *b = *senf; } } fn style(&self, s: &mut ESVariant<E>) { s.attach(&[StdVerb::ObjDefault]); s.attach(&self.style[..]); } fn child<'a>(&'a self, i: usize) -> Result<Resolvable<'a,E>,()> where 'w: 'a { Err(()) } fn into_child(self: Box<Self>, i: usize) -> Result<Resolvable<'w,E>,()> { Err(()) } } impl<'w,E> WidgetMut<'w,E> for Null<E> where E: Env, ERenderer<E>: RenderStdWidgets<E>, ESVariant<E>: StyleVariantSupport<StdVerb>, { fn childs_mut<'s>(&'s mut self) -> Vec<ResolvableMut<'s,E>> where 'w: 's { vec![] } fn into_childs_mut(self: Box<Self>) -> Vec<ResolvableMut<'w,E>> { vec![] } fn child_mut<'a>(&'a mut self, i: usize) -> Result<ResolvableMut<'a,E>,()> where 'w: 'a { Err(()) } fn into_child_mut(self: Box<Self>, i: usize) -> Result<ResolvableMut<'w,E>,()> { Err(()) } } unsafe impl<E> Statize for Null<E> where E: Env { type Statur = Self; }