From d6acadc32930eeb24b3e3f2905c4148412a3a1c0 Mon Sep 17 00:00:00 2001 From: Thomas Jentzsch Date: Sat, 1 Oct 2022 21:21:20 +0200 Subject: [PATCH] fixed unwanted button up events in UI navigation --- src/gui/DialogContainer.cxx | 8 +++++--- src/gui/DialogContainer.hxx | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gui/DialogContainer.cxx b/src/gui/DialogContainer.cxx index f39a022e8..cdca03d44 100644 --- a/src/gui/DialogContainer.cxx +++ b/src/gui/DialogContainer.cxx @@ -67,7 +67,7 @@ void DialogContainer::updateTime(uInt64 time) // Joystick has been pressed long if(myCurrentButtonDown.stick != -1 && myButtonLongPressTime < myTime) { - myButtonLongPress = true; + myIgnoreButtonUp = true; activeDialog->handleJoyDown(myCurrentButtonDown.stick, myCurrentButtonDown.button, true); myButtonLongPressTime = myButtonRepeatTime = myTime + _REPEAT_NONE; } @@ -348,8 +348,8 @@ void DialogContainer::handleJoyBtnEvent(int stick, int button, bool pressed) myCurrentButtonDown.stick = myCurrentButtonDown.button = -1; myButtonRepeatTime = myButtonLongPressTime = 0; } - if (myButtonLongPress) - myButtonLongPress = false; + if(myIgnoreButtonUp) + myIgnoreButtonUp = false; else activeDialog->handleJoyUp(stick, button); } @@ -383,6 +383,8 @@ void DialogContainer::handleJoyAxisEvent(int stick, JoyAxis axis, JoyDir adir, i myCurrentAxisDown.adir = adir; myAxisRepeatTime = myTime + (activeDialog->repeatEnabled() ? _REPEAT_INITIAL_DELAY : _REPEAT_NONE); } + if(adir != JoyDir::NONE) + myIgnoreButtonUp = true; // prevent button released events activeDialog->handleJoyAxis(stick, axis, adir, button); } diff --git a/src/gui/DialogContainer.hxx b/src/gui/DialogContainer.hxx index 69c6f5d66..44ef0cf2d 100644 --- a/src/gui/DialogContainer.hxx +++ b/src/gui/DialogContainer.hxx @@ -214,7 +214,7 @@ class DialogContainer } myCurrentButtonDown; uInt64 myButtonRepeatTime{0}; uInt64 myButtonLongPressTime{0}; - bool myButtonLongPress{false}; + bool myIgnoreButtonUp{false}; // For continuous 'joy axis down' events struct {