[−][src]Enum kas::event::Event
Events addressed to a widget
Variants (Non-exhaustive)
No event
Widget activation
For example, clicking a button, toggling a check-box, opening a menu or requesting char focus (keyboard input).
This event is triggered by keyboard navigation and accelerator key bindings, and may be used by a parent widget to activate a child.
Control(ControlKey)
Control / Navigation key input
This represents a "control" actions, usually triggered by a key, and are
received with char focus (Manager::request_char_focus
), nav focus
(Manager::nav_focus
) or as a nav
fallback (Manager::register_nav_fallback
).
Behaviour differs slightly between char and nav focus. When a widget
has char focus, the Space key sends a space character via
Event::ReceivedCharacter
while the Return key sends
ControlKey::Return
. Without char focus, both Space and Return keys
send Event::Activate
to the widget with nav focus (if any, otherwise
to the nav fallback, if any).
Widget lost keyboard input focus
Widget lost selection focus
Selection focus implies character focus, so this event implies that the
widget has already received Event::LostCharFocus
.
ReceivedCharacter(char)
Widget receives a character of text input
Scroll(ScrollDelta)
A mouse or touchpad scroll event
A mouse or touch-screen move/zoom/rotate event
Mouse-grabs generate translation (delta
component) only. Touch grabs
optionally also generate rotation and scaling components, depending on
the GrabMode
.
In general, a point p
on the screen should be transformed as follows:
// Works for Coord type; for DVec2 type-conversions are unnecessary: p = (alpha.complex_mul(p.into()) + delta).into();
When it is known that there is no rotational component, one can use a
simpler transformation: alpha.0 * p + delta
. When there is also no
scaling component, we just have a translation: p + delta
.
Note however that if events are generated with rotation and/or scaling
components, these simplifications are invalid.
Two such transforms may be combined as follows:
let alpha = alpha2.complex_mul(alpha1); let delta = alpha2.complex_mul(delta1) + delta2;
If instead one uses a transform to map screen-space to world-space, this transform should be adjusted as follows:
world_alpha = world_alpha.complex_div(alpha.into()); world_delta = world_delta - world_alpha.complex_mul(delta.into());
Those familiar with complex numbers may recognise that
alpha = a * e^{i*t}
where a
is the scale component and t
is the
angle of rotation. Calculate these components as follows:
let a = (alpha.0 * alpha.0 + alpha.1 * alpha.1).sqrt(); let t = (alpha.1).atan2(alpha.0);
A mouse button was pressed or touch event started
Fields of PressStart
Movement of mouse or a touch press
Received only given a press grab.
Fields of PressMove
End of a click/touch press
Received only given a press grab.
When end_id == None
, this is a "cancelled press": the end of the press
is outside the application window.
Fields of PressEnd
Update from a timer
This event is received after requesting timed wake-up(s)
(see Manager::update_on_timer
).
Update triggerred via an UpdateHandle
This event may be received after registering an UpdateHandle
via
Manager::update_on_handle
.
A user-defined payload is passed. Interpretation of this payload is user-defined and unfortunately not type safe.
Fields of HandleUpdate
handle: UpdateHandle
payload: u64
NewPopup(WidgetId)
Notification that a new popup has been created
This is sent to the parent of each open popup when a new popup is
created. This enables parents to close their popups when the new popup
is not a descendant of itself. The WidgetId
is that of the popup.
PopupRemoved(WindowId)
Notification that a popup has been destroyed
This is sent to the popup's parent after a popup has been removed. Since popups may be removed directly by the Manager, the parent should clean up any associated state here.
Sent when a widget receives keyboard navigation focus
The widget should reply with Response::Focus
.
Trait Implementations
impl Clone for Event
[src]
impl Debug for Event
[src]
impl PartialEq<Event> for Event
[src]
impl StructuralPartialEq for Event
[src]
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,
pub 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> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub 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.
pub 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>,