godotengine / godotengine/godot
Android multitouch gestures [InputEventMagnifyGesture, InputEventPanGesture]
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
- Reproducible in v4.4.stable.mono.official [4c311cbee]
### System information
Godot v4.4.stable.mono - Windows 11 (build 22631) - Multi-window, 1 monitor - Vulkan (Mobile) - dedicated NVIDIA GeForce RTX 4080 SUPER (NVIDIA; 32.0.15.6094) - Intel(R) Core(TM) i7-14700K (28 threads)
### Issue description
**Observed behavior:**
When a multitouch gesture is interrupted (one touch removed), Godot stops reacting to another touch completely, as if the user is not touching the screen at all. It's also no longer possible to get a multitouch gesture again unless the user stops touching the screen.
**Excpected behavior:**
Godot should either start sending InputEventScreenDrag/InputEventMouseMotion or at least be able to continue sending multitouch gestures upon placing touch back.
### Steps to reproduce
1. Build a project to a device
2. Start multitouch gesture
3. Remove one touch from screen
4. Observe godot stops detecting the other touch
### Minimal reproduction project (MRP)
[GestureIssue.zip](https://github.com/user-attachments/files/19722256/GestureIssue.zip)
Contributor guide
Research direction
Start by reproducing the issue with the linked GestureIssue.zip project on Android, following the four listed steps. Trace the Android handling of InputEventMagnifyGesture, InputEventPanGesture, InputEventScreenDrag, and InputEventMouseMotion after one touch is removed. Done means the remaining touch continues producing input or multitouch gestures can resume without requiring all touches to be released.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android
- Domain
- game-dev, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100