mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -51,6 +51,9 @@ public:
|
||||
bool hasKeyRepeat() const;
|
||||
bool isDown(Key *keylist) const;
|
||||
|
||||
void setTextInput(bool enable);
|
||||
bool hasTextInput() const;
|
||||
|
||||
private:
|
||||
|
||||
bool key_repeat;
|
||||
|
||||
@@ -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 }
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user