diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ba887aa..23a6ab7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,6 +89,7 @@ And please only add new entries to the top of this list, right below the `# Unre - **Breaking:** `with_x11_visual` now takes the visual ID instead of the bare pointer. - On X11, add a `with_embedded_parent_window` function to the window builder to allow embedding a window into another window. - On iOS, add force data to touch events when using the Apple Pencil. +- On Android, add force data to touch events. # 0.29.0-beta.0 diff --git a/src/event.rs b/src/event.rs index 498ce2d3..62b752e2 100644 --- a/src/event.rs +++ b/src/event.rs @@ -939,7 +939,10 @@ pub struct Touch { /// /// ## Platform-specific /// - /// - Only available on **iOS** 9.0+, **Windows** 8+, and **Web**. + /// - Only available on **iOS** 9.0+, **Windows** 8+, **Web**, and **Android**. + /// - **Android**: This will never be [None]. If the device doesn't support pressure + /// sensitivity, force will either be 0.0 or 1.0. Also see the + /// [android documentation](https://developer.android.com/reference/android/view/MotionEvent#AXIS_PRESSURE). pub force: Option, /// Unique identifier of a finger. pub id: u64, diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index aadf5cbb..03ee9102 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -23,7 +23,7 @@ use raw_window_handle::{ use crate::{ dpi::{PhysicalPosition, PhysicalSize, Position, Size}, error, - event::{self, InnerSizeWriter, StartCause}, + event::{self, Force, InnerSizeWriter, StartCause}, event_loop::{self, ControlFlow, DeviceEvents, EventLoopWindowTarget as RootELW}, platform::pump_events::PumpStatus, window::{ @@ -426,7 +426,7 @@ impl EventLoop { phase, location, id: pointer.pointer_id() as u64, - force: None, + force: Some(Force::Normalized(pointer.pressure() as f64)), }), }; callback(event, self.window_target());