[−][src]Enum druid::Event
An event, propagated downwards during event flow.
Events are things that happen that can change the state of widgets. An important category is events plumbed from the platform windowing system, which includes mouse and keyboard events, but also (in the future) status changes such as window focus changes.
Events can also be higher level concepts indicating state changes within the widget hierarchy, for example when a widget gains or loses focus or "hot" (also known as hover) status.
Events are a key part of what is called "event flow", which is
basically the propagation of an event through the widget hierarchy
through the event
widget method. A container widget will
generally pass the event to its children, mediated through the
WidgetPod
container, which is where most of the event flow logic
is applied (especially the decision whether or not to propagate).
This enum is expected to grow considerably, as there are many, many different kinds of events that are relevant in a GUI.
Variants
LifeCycle(LifeCycle)
Called when certain application and window lifecycle events occur.
For the various possible events, see the LifeCycle
enum.
Size(Size)
Called on the root widget when the window size changes.
Discussion: it's not obvious this should be propagated to user
widgets. It is propagated through the RootWidget and handled
in the WindowPod, but after that it might be considered better
to just handle it in layout
.
The propagation logic of "just the root" requires a little bit of complexity and state in EventCtx, so if it's not useful it should be removed.
MouseDown(MouseEvent)
Called when a mouse button is pressed.
MouseUp(MouseEvent)
Called when a mouse button is released.
MouseMoved(MouseEvent)
Called when the mouse is moved.
The MouseMoved
event is propagated to the active widget, if
there is one, otherwise to hot widgets (see HotChanged
).
The MouseMoved
event is also the primary mechanism for widgets
to set a cursor, for example to an I-bar inside a text widget. A
simple tactic is for the widget to unconditionally call
set_cursor
in the MouseMoved handler, as MouseMove
is only
propagated to active or hot widgets.
KeyDown(KeyEvent)
Called when a key is pressed.
Note: the intent is for each physical key press to correspond to
a single KeyDown
event. This is sometimes different than the
raw events provided by the platform. In particular, Windows sends
one or both of WM_KEYDOWN (a raw key code) and WM_CHAR (the
Unicode value), depending on the actual key.
KeyUp(KeyEvent)
Called when a key is released.
Because of repeat, there may be a number KeyDown
events before
a corresponding KeyUp
is sent.
Paste(Clipboard)
Called when a paste command is received.
Wheel(WheelEvent)
Called when the mouse wheel or trackpad is scrolled.
Zoom(f64)
Called when the trackpad is pinched.
The value is a delta.
HotChanged(bool)
Called when the "hot" status changes.
See is_hot
for
discussion about the hot status.
FocusChanged(bool)
Called when the focus status changes.
See has_focus
for
discussion about the focus status.
AnimFrame(u64)
Called at the beginning of a new animation frame.
On the first frame when transitioning from idle to animating, interval
will be 0. (This logic is presently per-window but might change to
per-widget to make it more consistent). Otherwise it is in nanoseconds.
Timer(TimerToken)
Called on a timer event.
Request a timer event through EventCtx::request_timer()
. That will
cause a timer event later.
Note that timer events from other widgets may be delivered as well. Use
the token returned from the request_timer()
call to filter events more
precisely.
Command(Command)
Called with an arbitrary Command
, submitted from elsewhere in
the application.
Commands can be issued when the user triggers a menu item or an
application-level hotkey, or they can be created dynamically by
Widget
s, at runtime, with EventCtx::submit_command
.
Methods
impl Event
[src]
pub fn transform_scroll(&self, offset: Vec2, viewport: Rect) -> Option<Event>
[src]
Transform the event for the contents of a scrolling container.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Event
impl !Send for Event
impl !Sync for Event
impl Unpin for Event
impl !UnwindSafe for Event
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> RoundFrom<T> for T
fn round_from(x: T) -> T
impl<T, U> RoundInto<U> for T where
U: RoundFrom<T>,
U: RoundFrom<T>,
fn round_into(self) -> U
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,