diff --git a/app/src/main/java/com/droiddeck/launcher/input/SteamTouchControls.kt b/app/src/main/java/com/droiddeck/launcher/input/SteamTouchControls.kt index c64e759d1..2138f9c92 100644 --- a/app/src/main/java/com/droiddeck/launcher/input/SteamTouchControls.kt +++ b/app/src/main/java/com/droiddeck/launcher/input/SteamTouchControls.kt @@ -675,7 +675,7 @@ class SteamTouchControls( val e = f?.element if (event.actionMasked != MotionEvent.ACTION_CANCEL && e != null && reach(e, event.getX(index), event.getY(index)) <= 1.3f) { when (e.type) { - SteamTouchConfig.THUMB -> openMenu() + SteamTouchConfig.THUMB -> { cancelForwarded(event); openMenu() } SteamTouchConfig.KEYBOARD -> onKeyboard() SteamTouchConfig.PASTE -> onPaste() } @@ -688,6 +688,16 @@ class SteamTouchControls( } + private fun cancelForwarded(event: MotionEvent) { + val split = event.pointerSubset(forwardedPointerBits).also { forwardedPointerBits = 0 } ?: return + split.action = MotionEvent.ACTION_CANCEL + try { + onTouchMiss?.invoke(split) + } finally { + split.recycle() + } + } + private fun forwardPointers(event: MotionEvent, pointerIdBits: Int) { val split = event.pointerSubset(pointerIdBits) ?: return try {