Corrects input issues when typing into text fields and it bleeding through to player inputs.

This commit is contained in:
Areloch 2015-09-21 00:14:16 -05:00
parent e8d1238794
commit 4c13906865
3 changed files with 17 additions and 6 deletions

View file

@ -484,12 +484,6 @@ void PlatformWindowSDL::_triggerKeyNotify(const SDL_Event& evt)
keyEvent.trigger(getWindowId(), torqueModifiers, inputAction, torqueKey);
//Con::printf("Key %d : %d", tKey.sym, inputAction);
}
// stop SDL_TEXTINPUT event when unwanted
if( inputAction == IA_MAKE && getKeyboardTranslation() && shouldNotTranslate( torqueModifiers, torqueKey ) )
SDL_StopTextInput();
else
SDL_StartTextInput();
}
void PlatformWindowSDL::_triggerTextNotify(const SDL_Event& evt)
@ -606,3 +600,12 @@ const UTF16 *PlatformWindowSDL::getCurtainWindowClassName()
static String str("CurtainWindowClassName");
return str.utf16();
}
void PlatformWindowSDL::setKeyboardTranslation(const bool enabled)
{
mEnableKeyboardTranslation = enabled;
if (mEnableKeyboardTranslation)
SDL_StartTextInput();
else
SDL_StopTextInput();
}

View file

@ -160,6 +160,9 @@ public:
virtual bool isMouseLocked() const { return mMouseLocked; };
virtual bool shouldLockMouse() const { return mShouldLockMouse; };
/// Set if relevant keypress events should be translated into character input events.
virtual void setKeyboardTranslation(const bool enabled);
virtual WindowId getWindowId();
SDL_Window* getSDLWindow() const { return mWindowHandle; }

View file

@ -105,6 +105,11 @@ void WindowInputGenerator::generateInputEvent( InputEventInfo &inputEvent )
if( mInputController->processInputEvent( inputEvent ) )
return;
if (mWindow->getKeyboardTranslation())
{
return;
}
// If we get here we failed to process it with anything prior... so let
// the ActionMap handle it.
ActionMap::handleEvent(&inputEvent);