From 26ab4dfb87550b2f8ceed5d11be614a239703fd7 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 20 Oct 2024 08:23:16 +0300 Subject: Implement touch interactive move --- src/input/mod.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/input/mod.rs') diff --git a/src/input/mod.rs b/src/input/mod.rs index b3e38892..11612f2f 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -24,7 +24,10 @@ use smithay::input::pointer::{ GestureSwipeBeginEvent, GestureSwipeEndEvent, GestureSwipeUpdateEvent, GrabStartData as PointerGrabStartData, MotionEvent, RelativeMotionEvent, }; -use smithay::input::touch::{DownEvent, MotionEvent as TouchMotionEvent, UpEvent}; +use smithay::input::touch::{ + DownEvent, GrabStartData as TouchGrabStartData, MotionEvent as TouchMotionEvent, UpEvent, +}; +use smithay::input::SeatHandler; use smithay::utils::{Logical, Point, Rectangle, Transform, SERIAL_COUNTER}; use smithay::wayland::pointer_constraints::{with_pointer_constraint, PointerConstraint}; use smithay::wayland::tablet_manager::{TabletDescriptor, TabletSeatTrait}; @@ -42,6 +45,7 @@ pub mod resize_grab; pub mod scroll_tracker; pub mod spatial_movement_grab; pub mod swipe_tracker; +pub mod touch_move_grab; pub const DOUBLE_CLICK_TIME: Duration = Duration::from_millis(400); @@ -56,6 +60,20 @@ pub struct TabletData { pub aspect_ratio: f64, } +pub enum PointerOrTouchStartData { + Pointer(PointerGrabStartData), + Touch(TouchGrabStartData), +} + +impl PointerOrTouchStartData { + pub fn location(&self) -> Point { + match self { + PointerOrTouchStartData::Pointer(x) => x.location, + PointerOrTouchStartData::Touch(x) => x.location, + } + } +} + impl State { pub fn process_input_event(&mut self, event: InputEvent) where -- cgit