winit-wayland: add pointer gesture hold

This commit is contained in:
Martin Marmsoler
2026-06-12 19:36:23 +02:00
committed by GitHub
parent 81b2729765
commit 850d5f59a7
6 changed files with 93 additions and 16 deletions

View File

@@ -269,6 +269,20 @@ pub enum WindowEvent {
button: ButtonSource,
},
/// Multi-finger hold gesture on the touchpad or touchscreen without movement.
///
/// The `phase` field indicates the lifecycle of the hold gesture:
/// - `Started`: One or more fingers are in contact with the touchpad/touchscreen.
/// - `Ended`: All fingers have been lifted from the touchpad/touchscreen.
/// - `Cancelled`: The hold gesture was interrupted, for example when another finger touches the
/// touchpad (causing a new `Started` event with more fingers), or when movement begins and
/// transitions to other gestures like pinch, pan, or rotation.
///
/// ## Platform-specific
///
/// - Only available on **Wayland**.
HoldGesture { device_id: Option<DeviceId>, phase: TouchPhase },
/// Two-finger pinch gesture, often used for magnification.
///
/// ## Platform-specific
@@ -1006,9 +1020,17 @@ pub enum Ime {
#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum TouchPhase {
/// Initial touch contact or gesture start, for example when one or more fingers touch the
/// screen or touchpad.
Started,
/// The touch contact point changed, for example without lifting the finger.
Moved,
/// All touch contact points have been lifted from the touchscreen or touchpad.
///
/// This event is important as it should clear any state or event in flight that was
/// generated by the preceding `Started` and `Moved` events.
Ended,
/// The event was cancelled and should cancel any event in flight and clear state.
Cancelled,
}