[][src]Enum kas::event::Event

#[non_exhaustive]pub enum Event {
    None,
    Activate,
    NavKey(NavKey),
    LostCharFocus,
    ReceivedCharacter(char),
    Scroll(ScrollDelta),
    Pan {
        alpha: DVec2,
        delta: DVec2,
    },
    PressStart {
        source: PressSource,
        start_id: WidgetId,
        coord: Coord,
    },
    PressMove {
        source: PressSource,
        cur_id: Option<WidgetId>,
        coord: Coord,
        delta: Coord,
    },
    PressEnd {
        source: PressSource,
        end_id: Option<WidgetId>,
        coord: Coord,
    },
    TimerUpdate,
    HandleUpdate {
        handle: UpdateHandle,
        payload: u64,
    },
    NewPopup(WidgetId),
    PopupRemoved(WindowId),
    NavFocus,
}

Events addressed to a widget

Variants (Non-exhaustive)

Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
None

No event

Activate

Widget activation, for example clicking a button or toggling a check-box

NavKey(NavKey)

Navigation key input

This is received when the widget has key-navigation focus. Note that the Enter/Return/Space keys are not a NavKey but instead trigger Event::Activate (depending on context).

LostCharFocus

Widget lost keyboard input focus

ReceivedCharacter(char)

Widget receives a character of text input

Scroll(ScrollDelta)

A mouse or touchpad scroll event

Pan

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);

Fields of Pan

alpha: DVec2

Rotation and scale component

delta: DVec2

Translation component

PressStart

A mouse button was pressed or touch event started

Fields of PressStart

source: PressSourcestart_id: WidgetIdcoord: Coord
PressMove

Movement of mouse or a touch press

Received only given a press grab.

Fields of PressMove

source: PressSourcecur_id: Option<WidgetId>coord: Coorddelta: Coord
PressEnd

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

source: PressSourceend_id: Option<WidgetId>coord: Coord
TimerUpdate

Update from a timer

This event is received after requesting timed wake-up(s) (see Manager::update_on_timer).

HandleUpdate

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: UpdateHandlepayload: 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.

NavFocus

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]

impl<Src, Scheme> ApproxFrom<Src, Scheme> for Src where
    Scheme: ApproxScheme
[src]

type Err = NoError

The error type produced by a failed conversion.

impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Src where
    Dst: ApproxFrom<Src, Scheme>,
    Scheme: ApproxScheme
[src]

type Err = <Dst as ApproxFrom<Src, Scheme>>::Err

The error type produced by a failed conversion.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T, Dst> ConvAsUtil<Dst> for T[src]

impl<T> ConvUtil for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<Src> TryFrom<Src> for Src[src]

type Err = NoError

The error type produced by a failed conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<Src, Dst> TryInto<Dst> for Src where
    Dst: TryFrom<Src>, 
[src]

type Err = <Dst as TryFrom<Src>>::Err

The error type produced by a failed conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<Src> ValueFrom<Src> for Src[src]

type Err = NoError

The error type produced by a failed conversion.

impl<Src, Dst> ValueInto<Dst> for Src where
    Dst: ValueFrom<Src>, 
[src]

type Err = <Dst as ValueFrom<Src>>::Err

The error type produced by a failed conversion.