Touchscreen: Abort ongoing short taps if touch interaction mode changes (#14305)

This commit is contained in:
grorp 2024-01-26 23:19:06 +01:00 committed by GitHub
parent df9975f35d
commit 2b99dabdac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 0 deletions

@ -1091,6 +1091,15 @@ void TouchScreenGUI::applyContextControls(const TouchInteractionMode &mode)
u64 now = porting::getTimeMs();
// If the meanings of short and long taps have been swapped, abort any ongoing
// short taps because they would do something else than the player expected.
// Long taps don't need this, they're adjusted to the swapped meanings instead.
if (mode != m_last_mode) {
m_dig_pressed_until = 0;
m_place_pressed_until = 0;
}
m_last_mode = mode;
switch (m_tap_state) {
case TapState::ShortTap:
if (mode == SHORT_DIG_LONG_PLACE) {

@ -314,6 +314,7 @@ private:
v2s32 getPointerPos();
void emitMouseEvent(EMOUSE_INPUT_EVENT type);
TouchInteractionMode m_last_mode = TouchInteractionMode_END;
TapState m_tap_state = TapState::None;
bool m_dig_pressed = false;