aboutsummaryrefslogtreecommitdiff
path: root/src/input/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-10-20 08:23:16 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-10-27 23:07:39 -0700
commit26ab4dfb87550b2f8ceed5d11be614a239703fd7 (patch)
treeb18cfb830f34e2c308cb11159b8459b31be5f9aa /src/input/mod.rs
parente887ee93a30390b641bf647d694a1424f7ce4592 (diff)
downloadniri-26ab4dfb87550b2f8ceed5d11be614a239703fd7.tar.gz
niri-26ab4dfb87550b2f8ceed5d11be614a239703fd7.tar.bz2
niri-26ab4dfb87550b2f8ceed5d11be614a239703fd7.zip
Implement touch interactive move
Diffstat (limited to 'src/input/mod.rs')
-rw-r--r--src/input/mod.rs20
1 files changed, 19 insertions, 1 deletions
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<D: SeatHandler> {
+ Pointer(PointerGrabStartData<D>),
+ Touch(TouchGrabStartData<D>),
+}
+
+impl<D: SeatHandler> PointerOrTouchStartData<D> {
+ pub fn location(&self) -> Point<f64, Logical> {
+ match self {
+ PointerOrTouchStartData::Pointer(x) => x.location,
+ PointerOrTouchStartData::Touch(x) => x.location,
+ }
+ }
+}
+
impl State {
pub fn process_input_event<I: InputBackend + 'static>(&mut self, event: InputEvent<I>)
where