pub enum LifeCycle {
WidgetAdded,
Size(Size),
DisabledChanged(bool),
HotChanged(bool),
BuildFocusChain,
FocusChanged(bool),
ViewContextChanged(ViewContext),
Internal(InternalLifeCycle),
}
Expand description
Application life cycle events.
Unlike Event
s, 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 WidgetPod
s.
Implementations§
source§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
.
sourcepub fn ignore_hot(&self, ignore: bool) -> Self
pub fn ignore_hot(&self, ignore: bool) -> Self
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.