/// Implementation of `Widget` trait for `WidgetBox`. We just forward to the inner `Widget`. impl<D: Data + 'static + Default> Widget<D> for WidgetBox<D> { /// Paint the `Widget` fn paint( &mut self, paint_ctx: &mut PaintCtx, base_state: &BaseState, data: &D, env: &Env ) { match &mut self.get_widgets()[self.0 as usize] { // TODO: Simplify with `ambassador` https://github.com/hobofan/ambassador WidgetType::Align(w) => w.paint(paint_ctx, base_state, data, env), WidgetType::Button(w) => w.paint(paint_ctx, base_state, data, env), WidgetType::Flex(w) => w.paint(paint_ctx, base_state, data, env), WidgetType::Label(w) => w.paint(paint_ctx, base_state, data, env), WidgetType::Padding(w) => w.paint(paint_ctx, base_state, data, env), WidgetType::None => panic!("missing widget") }; } ...