From 6b18411ee5855acdbce2e0ab5dd508cb07b04706 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 8 Apr 2012 21:20:49 +0300 Subject: Allow assign keys before connecting to game. --- src/client.cpp | 3 +++ src/inputmanager.cpp | 21 ++++++++++++++------- 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 */ -- cgit v1.2.3-70-g09d2