Skip to main content

PointerEvent

Struct PointerEvent 

Source
pub struct PointerEvent {
    pub id: u64,
    pub kind: PointerEventKind,
    pub phase: PointerPhase,
    pub position: Point,
    pub global_position: Point,
    pub scroll_delta: Point,
    pub buttons: PointerButtons,
    pub time_ms: Option<i64>,
    pub animation_time_nanos: Option<u64>,
    pub zoom_delta: f32,
    pub source: PointerSource,
    /* private fields */
}
Expand description

Pointer event with consumption tracking for gesture disambiguation.

Events can be consumed by handlers (e.g., scroll) to prevent other handlers (e.g., clicks) from receiving them. This enables proper gesture disambiguation matching Jetpack Compose’s event consumption pattern.

Fields§

§id: u64§kind: PointerEventKind§phase: PointerPhase§position: Point§global_position: Point§scroll_delta: Point

Scroll delta in logical pixels.

This is non-zero for PointerEventKind::Scroll events and zero for button/move events.

§buttons: PointerButtons§time_ms: Option<i64>

Platform timestamp of the input sample in milliseconds, when available.

The time base is platform specific (e.g. Android’s uptime clock); only differences between events of the same gesture are meaningful. Gesture velocity trackers must prefer this over the delivery time because platforms like Android deliver input batched/frame-aligned: several samples arrive back-to-back and delivery-time stamping makes computed velocities wildly wrong.

§animation_time_nanos: Option<u64>

Timestamp in the animation frame-clock domain at input dispatch. Unlike time_ms, this has the same origin as frame callbacks and can anchor input-driven animations without a wall/platform clock conversion.

§zoom_delta: f32

Multiplicative zoom factor for PointerEventKind::Zoom events (> 1.0 zooms in, < 1.0 zooms out). 1.0 for all other events.

§source: PointerSource

The kind of device that produced this event (touch, mouse, stylus), when the platform reports it. Defaults to PointerSource::Unknown.

Implementations§

Source§

impl PointerEvent

Source

pub fn new( kind: PointerEventKind, position: Point, global_position: Point, ) -> PointerEvent

Source

pub fn with_id(self, id: u64) -> PointerEvent

Set the pointer id for this event (0 is the primary pointer).

Source

pub fn with_zoom_delta(self, zoom_delta: f32) -> PointerEvent

Set the multiplicative zoom factor for a PointerEventKind::Zoom event.

Source

pub fn with_scroll_delta(self, scroll_delta: Point) -> PointerEvent

Set the scroll delta for this event.

Source

pub fn with_time_ms(self, time_ms: Option<i64>) -> PointerEvent

Set the platform timestamp (milliseconds) for this event.

Source

pub fn with_animation_time_nanos(self, time_nanos: u64) -> PointerEvent

Set the timestamp in the animation frame-clock domain.

Source

pub fn with_buttons(self, buttons: PointerButtons) -> PointerEvent

Set the buttons state for this event

Source

pub fn with_source(self, source: PointerSource) -> PointerEvent

Set the device source (touch/mouse/stylus) for this event.

Source

pub fn consume(&self)

Mark this event as consumed, preventing other handlers from processing it.

Example: Scroll gestures consume events once dragging starts to prevent child buttons from firing clicks.

Source

pub fn is_consumed(&self) -> bool

Check if this event has been consumed by another handler.

Handlers should check this before processing events. For example, clickable should not fire if the event was consumed by a scroll gesture.

Source

pub fn copy_with_local_position(&self, position: Point) -> PointerEvent

Creates a copy of this event with a new local position, sharing the consumption state.

Trait Implementations§

Source§

impl Clone for PointerEvent

Source§

fn clone(&self) -> PointerEvent

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PointerEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.