summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorewewukek <ewewukek@gmail.com>2024-04-02 08:18:17 +0300
committerFedja Beader <fedja@protonmail.ch>2024-05-15 00:11:38 +0200
commit16fafb1516a346ee0553a329b0606c2bb55283d7 (patch)
tree653360810d5c394e3457a4c6f8a236e69fa2618b
parent4c6d99ef4e393f900c4acf521a376f6ea0e012f6 (diff)
downloadManaVerse-16fafb1516a346ee0553a329b0606c2bb55283d7.tar.gz
ManaVerse-16fafb1516a346ee0553a329b0606c2bb55283d7.tar.bz2
ManaVerse-16fafb1516a346ee0553a329b0606c2bb55283d7.tar.xz
ManaVerse-16fafb1516a346ee0553a329b0606c2bb55283d7.zip
Consume input event in QuitDialog instead of relying on a hack
-rw-r--r--src/gui/windows/quitdialog.cpp5
-rw-r--r--src/input/inputmanager.cpp22
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")