diff --git a/source/glest_game/menu/menu_state_keysetup.cpp b/source/glest_game/menu/menu_state_keysetup.cpp index e8709b58..c1c197f0 100644 --- a/source/glest_game/menu/menu_state_keysetup.cpp +++ b/source/glest_game/menu/menu_state_keysetup.cpp @@ -80,25 +80,35 @@ MenuStateKeysetup::MenuStateKeysetup(Program *program, MainMenu *mainMenu): keyButtonsToRender=400/keyButtonsLineHeight; int labelWidth=100; + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + Config &configKeys = Config::getInstance(std::pair(cfgMainKeys,cfgUserKeys)); mergedProperties=configKeys.getMergedProperties(); masterProperties=configKeys.getMasterProperties(); //userProperties=configKeys.getUserProperties(); userProperties.clear(); + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + //throw runtime_error("Test!"); for(int i = 0; i < mergedProperties.size(); ++i) { string keyName = mergedProperties[i].second; if(keyName.length() > 0) { - SDLKey keysym = static_cast(configKeys.translateStringToCharKey(keyName)); - // SDL skips capital letters - if(keysym >= 65 && keysym <= 90) { - keysym = (SDLKey)((int)keysym + 32); + char c = configKeys.translateStringToCharKey(keyName); + if(c > SDLK_UNKNOWN && c < SDLK_LAST) { + SDLKey keysym = static_cast(c); + // SDL skips capital letters + if(keysym >= 65 && keysym <= 90) { + keysym = (SDLKey)((int)keysym + 32); + } + keyName = SDL_GetKeyName(keysym); } - keyName = SDL_GetKeyName(keysym); - if(keyName == "unknown key") { + else { + keyName = ""; + } + if(keyName == "unknown key" || keyName == "") { keyName = mergedProperties[i].second; } } @@ -113,6 +123,8 @@ MenuStateKeysetup::MenuStateKeysetup(Program *program, MainMenu *mainMenu): labels.push_back(label); } + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + keyScrollBar.init(keyButtonsXBase+keyButtonsWidth+labelWidth+20,200,false,200,20); keyScrollBar.setLength(400); keyScrollBar.setElementCount(keyButtons.size()); diff --git a/source/glest_game/menu/menu_state_keysetup.h b/source/glest_game/menu/menu_state_keysetup.h index 6d106215..cc2b0d8c 100644 --- a/source/glest_game/menu/menu_state_keysetup.h +++ b/source/glest_game/menu/menu_state_keysetup.h @@ -55,7 +55,7 @@ private: public: MenuStateKeysetup(Program *program, MainMenu *mainMenu); - ~MenuStateKeysetup(); + virtual ~MenuStateKeysetup(); void mouseClick(int x, int y, MouseButton mouseButton); void mouseMove(int x, int y, const MouseState *mouseState);