pub trait Widget<Message, Renderer> {
fn width(&self) -> Length;
fn height(&self) -> Length;
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node;
fn draw(
&self,
state: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
);
fn tag(&self) -> Tag { ... }
fn state(&self) -> State { ... }
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
{ ... }
fn diff(&self, _tree: &mut Tree) { ... }
fn on_event(
&mut self,
_state: &mut Tree,
_event: Event,
_layout: Layout<'_>,
_cursor_position: Point,
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
_shell: &mut Shell<'_, Message>
) -> Status { ... }
fn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle<f32>,
_renderer: &Renderer
) -> Interaction { ... }
fn overlay(
&'a self,
_state: &'a mut Tree,
_layout: Layout<'_>,
_renderer: &Renderer
) -> Option<Element<'a, Message, Renderer>> { ... }
}
Available on crate feature
pure
only.Expand description
A component that displays information and allows interaction.
If you want to build your own widgets, you will need to implement this trait.
Required Methods
Returns the layout::Node
of the Widget
.
This layout::Node
is used by the runtime to compute the Layout
of the
user interface.
Provided Methods
Processes a runtime Event
.
By default, it does nothing.
fn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle<f32>,
_renderer: &Renderer
) -> Interaction
fn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle<f32>,
_renderer: &Renderer
) -> Interaction
Returns the current mouse::Interaction
of the Widget
.
By default, it returns mouse::Interaction::Idle
.
Implementations on Foreign Types
sourceimpl<Message, Renderer> Widget<Message, Renderer> for Text<Renderer> where
Renderer: Renderer,
impl<Message, Renderer> Widget<Message, Renderer> for Text<Renderer> where
Renderer: Renderer,
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Scrollable<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Scrollable<'a, Message, Renderer> where
Renderer: Renderer,
fn tag(&self) -> Tag
fn state(&self) -> State
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
fn diff(&self, tree: &mut Tree)
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>
)
fn mouse_interaction(
&self,
tree: &Tree,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
fn overlay(
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer
) -> Option<Element<'b, Message, Renderer>>
sourceimpl<'a, T, Message, Renderer> Widget<Message, Renderer> for PickList<'a, T, Message, Renderer> where
T: 'a + 'static + Clone + ToString + Eq,
Message: 'a,
Renderer: 'a + Renderer,
[T]: ToOwned,
<[T] as ToOwned>::Owned == Vec<T, Global>,
impl<'a, T, Message, Renderer> Widget<Message, Renderer> for PickList<'a, T, Message, Renderer> where
T: 'a + 'static + Clone + ToString + Eq,
Message: 'a,
Renderer: 'a + Renderer,
[T]: ToOwned,
<[T] as ToOwned>::Owned == Vec<T, Global>,
fn tag(&self) -> Tag
fn state(&self) -> State
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn mouse_interaction(
&self,
_tree: &Tree,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>,
_renderer: &Renderer
) -> Interaction
fn draw(
&self,
_tree: &Tree,
renderer: &mut Renderer,
_style: &Style,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>
)
fn overlay(
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
_renderer: &Renderer
) -> Option<Element<'b, Message, Renderer>>
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Container<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Container<'a, Message, Renderer> where
Renderer: Renderer,
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
fn diff(&self, tree: &mut Tree)
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn mouse_interaction(
&self,
tree: &Tree,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
renderer_style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
)
fn overlay(
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer
) -> Option<Element<'b, Message, Renderer>>
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Tooltip<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Tooltip<'a, Message, Renderer> where
Renderer: Renderer,
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
fn diff(&self, tree: &mut Tree)
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn mouse_interaction(
&self,
tree: &Tree,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
inherited_style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
)
fn overlay(
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer
) -> Option<Element<'b, Message, Renderer>>
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for PaneGrid<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for PaneGrid<'a, Message, Renderer> where
Renderer: Renderer,
fn tag(&self) -> Tag
fn state(&self) -> State
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
fn diff(&self, tree: &mut Tree)
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn mouse_interaction(
&self,
tree: &Tree,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
)
fn overlay(
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer
) -> Option<Element<'b, Message, Renderer>>
sourceimpl<Message, Renderer, Handle> Widget<Message, Renderer> for Image<Handle> where
Handle: Clone + Hash,
Renderer: Renderer<Handle = Handle>,
impl<Message, Renderer, Handle> Widget<Message, Renderer> for Image<Handle> where
Handle: Clone + Hash,
Renderer: Renderer<Handle = Handle>,
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Radio<'a, Message, Renderer> where
Message: Clone,
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Radio<'a, Message, Renderer> where
Message: Clone,
Renderer: Renderer,
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
_state: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn draw(
&self,
_tree: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
)
fn mouse_interaction(
&self,
_state: &Tree,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for TextInput<'a, Message, Renderer> where
Message: Clone,
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for TextInput<'a, Message, Renderer> where
Message: Clone,
Renderer: Renderer,
fn tag(&self) -> Tag
fn state(&self) -> State
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
_style: &Style,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>
)
fn mouse_interaction(
&self,
_state: &Tree,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>,
_renderer: &Renderer
) -> Interaction
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Checkbox<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Checkbox<'a, Message, Renderer> where
Renderer: Renderer,
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
_state: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn draw(
&self,
_tree: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
)
fn mouse_interaction(
&self,
_state: &Tree,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Toggler<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Toggler<'a, Message, Renderer> where
Renderer: Renderer,
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn draw(
&self,
_state: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
)
fn mouse_interaction(
&self,
_state: &Tree,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
fn on_event(
&mut self,
_state: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Row<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Row<'a, Message, Renderer> where
Renderer: Renderer,
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
fn diff(&self, tree: &mut Tree)
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn mouse_interaction(
&self,
tree: &Tree,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>,
renderer: &Renderer
) -> Interaction
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle<f32>
)
fn overlay(
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer
) -> Option<Element<'b, Message, Renderer>>
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Button<'a, Message, Renderer> where
Message: 'a + Clone,
Renderer: 'a + Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Button<'a, Message, Renderer> where
Message: 'a + Clone,
Renderer: 'a + Renderer,
fn tag(&self) -> Tag
fn state(&self) -> State
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
fn diff(&self, tree: &mut Tree)
fn width(&self) -> Length
fn height(&self) -> Length
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn on_event(
&mut self,
tree: &mut Tree,
event: Event,
layout: Layout<'_>,
cursor_position: Point,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>
) -> Status
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
_style: &Style,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>
)
fn mouse_interaction(
&self,
_tree: &Tree,
layout: Layout<'_>,
cursor_position: Point,
_viewport: &Rectangle<f32>,
_renderer: &Renderer
) -> Interaction
fn overlay(
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer
) -> Option<Element<'b, Message, Renderer>>
sourceimpl<'a, Message, Renderer> Widget<Message, Renderer> for Column<'a, Message, Renderer> where
Renderer: Renderer,
impl<'a, Message, Renderer> Widget<Message, Renderer> for Column<'a, Message, Renderer> where
Renderer: Renderer,
fn children(&self) -> Vec<Tree, Global>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,