pub enum LifeCycle {
WidgetAdded,
Size(Size),
DisabledChanged(bool),
HotChanged(bool),
BuildFocusChain,
FocusChanged(bool),
ViewContextChanged(ViewContext),
Internal(InternalLifeCycle),
}Expand description
Application life cycle events.
Unlike Events, LifeCycle events are generated by Druid, and
may occur at different times during a given pass of the event loop. The
LifeCycle::WidgetAdded event, for instance, may occur when the app
first launches (during the handling of Event::WindowConnected) or it
may occur during update cycle, if some widget has been added there.
Similarly the LifeCycle::Size method occurs during layout, and
LifeCycle::HotChanged can occur both during event (if the mouse
moves over a widget) or in response to LifeCycle::ViewContextChanged,
if a widget is moved away from under the mouse.
Variants§
WidgetAdded
Sent to a Widget when it is added to the widget tree. This should be
the first message that each widget receives.
Widgets should handle this event in order to do any initial setup.
In addition to setup, this event is also used by the framework to track certain types of important widget state.
Registering children
Container widgets (widgets which use WidgetPod to manage children)
must ensure that this event is forwarded to those children. The WidgetPod
itself will handle registering those children with the system; this is
required for things like correct routing of events.
Size(Size)
Called when the Size of the widget changes.
This will be called after Widget::layout, if the Size returned
by the widget differs from its previous size.
DisabledChanged(bool)
Called when the Disabled state of the widgets is changed.
To check if a widget is disabled, see is_disabled.
To change a widget’s disabled state, see set_disabled.
HotChanged(bool)
Called when the “hot” status changes.
This will always be called before the event that triggered it; that is,
when the mouse moves over a widget, that widget will receive
LifeCycle::HotChanged before it receives Event::MouseMove.
See is_hot for
discussion about the hot status.
BuildFocusChain
This is called when the widget-tree changes and Druid wants to rebuild the Focus-chain.
It is the only place from which register_for_focus should be called.
By doing so the widget can get focused by other widgets using focus_next or focus_prev.
FocusChanged(bool)
Called when the focus status changes.
This will always be called immediately after a new widget gains focus.
The newly focused widget will receive this with true and the widget
that lost focus will receive this with false.
See EventCtx::is_focused for more information about focus.
ViewContextChanged(ViewContext)
Called when the ViewContext of this widget changed.
See view_context_changed on how and when to request this event.
Internal(InternalLifeCycle)
Internal Druid lifecycle event.
This should always be passed down to descendant WidgetPods.
Implementations§
§impl LifeCycle
impl LifeCycle
Whether this event should be sent to widgets which are currently not visible and not accessible.
If a widget changes which children are hidden it must call children_changed.
For a more detailed explanation of the hidden state, see Event::should_propagate_to_hidden.
pub fn ignore_hot(&self, ignore: bool) -> LifeCycle
pub fn ignore_hot(&self, ignore: bool) -> LifeCycle
Returns an event for a widget which maybe is overlapped by another widget.
When ignore is set to true the widget will set its hot state to false even if the cursor
is inside its bounds.