From 72f9c0595f36debc74d713ed7226871d6470b4e3 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Sat, 15 Mar 2025 19:23:44 +0100 Subject: [PATCH] handle MotionEvent.ACTION_CANCEL in TouchGestureDetector (see #126) --- .../launcher/ui/TouchGestureDetector.kt | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt index 1c05d54..74b8351 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt @@ -87,24 +87,40 @@ class TouchGestureDetector( } private var paths = HashMap() - private var gestureIsLongClick = false + + /* Set when + * - the longPressHandler has detected this gesture as a long press + * - the gesture was cancelled by MotionEvent.ACTION_CANCEL + * In any case, the current gesture should be ignored by further detection logic. + */ + private var cancelled = false private var lastTappedTime = 0L private var lastTappedLocation: Vector? = null fun onTouchEvent(event: MotionEvent) { + + if (event.actionMasked == MotionEvent.ACTION_CANCEL) { + synchronized(this@TouchGestureDetector) { + cancelled = true + } + } + val pointerIdToIndex = (0..