diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-04-08 21:20:49 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-04-08 21:20:49 +0300 |
commit | 6b18411ee5855acdbce2e0ab5dd508cb07b04706 (patch) | |
tree | 7eee355a1dfa9f2262d45a34954e611e5bd17a9a | |
parent | bb258f09a0b50f6382be2ff36637191a8b103c3f (diff) | |
download | plus-6b18411ee5855acdbce2e0ab5dd508cb07b04706.tar.gz plus-6b18411ee5855acdbce2e0ab5dd508cb07b04706.tar.bz2 plus-6b18411ee5855acdbce2e0ab5dd508cb07b04706.tar.xz plus-6b18411ee5855acdbce2e0ab5dd508cb07b04706.zip |
Allow assign keys before connecting to game.
-rw-r--r-- | src/client.cpp | 3 | ||||
-rw-r--r-- | src/inputmanager.cpp | 21 | ||||
-rw-r--r-- | src/inputmanager.h | 2 |
3 files changed, 19 insertions, 7 deletions
diff --git a/src/client.cpp b/src/client.cpp index 12415c6e4..a7ee6a32c 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -857,6 +857,9 @@ int Client::gameExec() break; case SDL_KEYDOWN: + inputManager.handleAssignKey(event); + break; + default: break; diff --git a/src/inputmanager.cpp b/src/inputmanager.cpp index cc45a79cf..22af8438c 100644 --- a/src/inputmanager.cpp +++ b/src/inputmanager.cpp @@ -361,18 +361,25 @@ void InputManager::unassignKey() keyboard.update(); } +bool InputManager::handleAssignKey(const SDL_Event &event) +{ + if (setupWindow && setupWindow->isVisible() && + getNewKeyIndex() > Input::KEY_NO_VALUE) + { + setNewKey(event); + callbackNewKey(); + setNewKeyIndex(Input::KEY_NO_VALUE); + return true; + } + return false; +} + bool InputManager::handleEvent(const SDL_Event &event) { if (event.type == SDL_KEYDOWN) { - if (setupWindow && setupWindow->isVisible() && - getNewKeyIndex() > Input::KEY_NO_VALUE) - { - setNewKey(event); - callbackNewKey(); - setNewKeyIndex(Input::KEY_NO_VALUE); + if (handleAssignKey(event)) return true; - } // send straight to gui for certain windows if (quitDialog || TextDialog::isActive() || diff --git a/src/inputmanager.h b/src/inputmanager.h index 0efe2d85e..0c78e1e09 100644 --- a/src/inputmanager.h +++ b/src/inputmanager.h @@ -139,6 +139,8 @@ class InputManager bool invokeKey(const KeyData *key, int keyNum, int mask); + bool handleAssignKey(const SDL_Event &event); + protected: Setup_Keyboard *mSetupKey; /**< Reference to setup window */ |