pub trait WidgetImpl: Downcast {
    fn get_dims(&self) -> ScreenDims;
    fn set_pos(&mut self, top_left: ScreenPt);
    fn event(&mut self, ctx: &mut EventCtx<'_>, output: &mut WidgetOutput);
    fn draw(&self, g: &mut GfxCtx<'_>);

    fn can_restore(&self) -> bool { ... }
    fn restore(&mut self, _: &mut EventCtx<'_>, _prev: &dyn WidgetImpl) { ... }
}
Expand description

Create a new widget by implementing this trait. You can instantiate your widget by calling Widget::new(Box::new(instance of your new widget)), which gives you the usual style options.

Required Methods

What width and height does the widget occupy? If this changes, be sure to set redo_layout to true in event.

Your widget’s top left corner should be here. Handle mouse events and draw appropriately.

Your chance to react to an event. Any side effects outside of this widget are communicated through the output.

Draw the widget. Be sure to draw relative to the top-left specified by set_pos.

Provided Methods

If a new Panel is being created to replace an older one, all widgets have the chance to preserve state from the previous version.

Restore state from the previous version of this widget, with the same ID. Implementors must downcast.

Implementations

Returns true if the trait object wraps an object of type __T.

Returns a boxed object from a boxed trait object if the underlying object is of type __T. Returns the original boxed trait if it isn’t.

Returns an Rc-ed object from an Rc-ed trait object if the underlying object is of type __T. Returns the original Rc-ed trait if it isn’t.

Returns a reference to the object within the trait object if it is of type __T, or None if it isn’t.

Returns a mutable reference to the object within the trait object if it is of type __T, or None if it isn’t.

Implementors