diff options
author | ewewukek <ewewukek@gmail.com> | 2024-04-02 08:18:17 +0300 |
---|---|---|
committer | Fedja Beader <fedja@protonmail.ch> | 2024-05-15 00:11:38 +0200 |
commit | 16fafb1516a346ee0553a329b0606c2bb55283d7 (patch) | |
tree | 653360810d5c394e3457a4c6f8a236e69fa2618b | |
parent | 4c6d99ef4e393f900c4acf521a376f6ea0e012f6 (diff) | |
download | plus-16fafb1516a346ee0553a329b0606c2bb55283d7.tar.gz plus-16fafb1516a346ee0553a329b0606c2bb55283d7.tar.bz2 plus-16fafb1516a346ee0553a329b0606c2bb55283d7.tar.xz plus-16fafb1516a346ee0553a329b0606c2bb55283d7.zip |
Consume input event in QuitDialog instead of relying on a hack
-rw-r--r-- | src/gui/windows/quitdialog.cpp | 5 | ||||
-rw-r--r-- | src/input/inputmanager.cpp | 22 |
2 files changed, 12 insertions, 15 deletions
diff --git a/src/gui/windows/quitdialog.cpp b/src/gui/windows/quitdialog.cpp index d1ceb1ad9..7ef2bc6e8 100644 --- a/src/gui/windows/quitdialog.cpp +++ b/src/gui/windows/quitdialog.cpp @@ -210,6 +210,7 @@ void QuitDialog::keyPressed(KeyEvent &event) { const InputActionT actionId = event.getActionId(); int dir = 0; + bool consume = true; PRAGMA45(GCC diagnostic push) PRAGMA45(GCC diagnostic ignored "-Wswitch-enum") @@ -229,10 +230,14 @@ void QuitDialog::keyPressed(KeyEvent &event) dir = 1; break; default: + consume = false; break; } PRAGMA45(GCC diagnostic pop) + if (consume) + event.consume(); + if (dir != 0) { STD_VECTOR<RadioButton*>::const_iterator it = mOptions.begin(); diff --git a/src/input/inputmanager.cpp b/src/input/inputmanager.cpp index fc2815b5e..8cb10041e 100644 --- a/src/input/inputmanager.cpp +++ b/src/input/inputmanager.cpp @@ -691,21 +691,7 @@ bool InputManager::handleEvent(const SDL_Event &restrict event) restrict2 BLOCK_END("InputManager::handleEvent") return true; } - keyboard.handleActivateKey(event); - // send straight to gui for certain windows -#ifndef DYECMD - if ((quitDialog != nullptr) || TextDialog::isActive()) - { - if (guiInput != nullptr) - guiInput->pushInput(event); - if (gui != nullptr) - gui->handleInput(); - BLOCK_END("InputManager::handleEvent") - return true; - } -#endif // DYECMD - break; } case SDL_KEYUP: @@ -767,9 +753,15 @@ bool InputManager::handleEvent(const SDL_Event &restrict event) restrict2 guiInput->pushInput(event); if (gui != nullptr) { - const bool res = gui->handleInput(); + bool res = gui->handleInput(); +#ifndef DYECMD + // always treat keyboard input as handled if a text dialog is active + if (event.type == SDL_KEYDOWN && TextDialog::isActive()) + res = true; +#endif // DYECMD const bool joystickActionEvent = joystick != nullptr && joystick->isActionEvent(event); + // stop processing input if event is consumed by the gui if (res && (event.type == SDL_KEYDOWN || joystickActionEvent)) { BLOCK_END("InputManager::handleEvent") |