Added love.keyboard.setTextInput to enable/disable text input events (enabled by default.)

This fixes the issue of receiving an unwanted text input event if a key is used to bring a game's textbox into focus, since textinput events can be triggered after keypress events if the keypress generates text.
This commit is contained in:
Alex Szpakowski
2013-09-05 18:55:44 -03:00
parent 93a782d445
commit 389e99bf2c
5 changed files with 43 additions and 0 deletions
+11
View File
@@ -254,6 +254,17 @@ public:
**/
virtual bool isDown(Key *keylist) const = 0;
/**
* Sets whether text input events should be sent
* @param enable Whether to send text input events.
**/
virtual void setTextInput(bool enable) = 0;
/**
* Gets whether text input events are enabled.
**/
virtual bool hasTextInput() const = 0;
static bool getConstant(const char *in, Key &out);
static bool getConstant(Key in, const char *&out);
+13
View File
@@ -64,6 +64,19 @@ bool Keyboard::isDown(Key *keylist) const
return false;
}
void Keyboard::setTextInput(bool enable)
{
if (enable)
SDL_StartTextInput();
else
SDL_StopTextInput();
}
bool Keyboard::hasTextInput() const
{
return SDL_IsTextInputActive();
}
std::map<Keyboard::Key, SDL_Keycode> Keyboard::createKeyMap()
{
std::map<Keyboard::Key, SDL_Keycode> k;
+3
View File
@@ -51,6 +51,9 @@ public:
bool hasKeyRepeat() const;
bool isDown(Key *keylist) const;
void setTextInput(bool enable);
bool hasTextInput() const;
private:
bool key_repeat;
+14
View File
@@ -62,11 +62,25 @@ int w_isDown(lua_State *L)
return 1;
}
int w_setTextInput(lua_State *L)
{
instance->setTextInput(luax_toboolean(L, 1));
return 0;
}
int w_hasTextInput(lua_State *L)
{
luax_pushboolean(L, instance->hasTextInput());
return 1;
}
// List of functions to wrap.
static const luaL_Reg functions[] =
{
{ "setKeyRepeat", w_setKeyRepeat },
{ "hasKeyRepeat", w_hasKeyRepeat },
{ "setTextInput", w_setTextInput },
{ "hasTextInput", w_hasTextInput },
{ "isDown", w_isDown },
{ 0, 0 }
};
+2
View File
@@ -32,6 +32,8 @@ namespace keyboard
int w_setKeyRepeat(lua_State *L);
int w_hasKeyRepeat(lua_State *L);
int w_isDown(lua_State *L);
int w_setTextInput(lua_State *L);
int w_hasTextInput(lua_State *L);
extern "C" LOVE_EXPORT int luaopen_love_keyboard(lua_State *L);
} // keyboard