mirror of
https://github.com/love2d/love.git
synced 2026-08-19 04:06:17 +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;
|
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(const char *in, Key &out);
|
||||||
static bool getConstant(Key in, const char *&out);
|
static bool getConstant(Key in, const char *&out);
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,19 @@ bool Keyboard::isDown(Key *keylist) const
|
|||||||
return false;
|
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> Keyboard::createKeyMap()
|
||||||
{
|
{
|
||||||
std::map<Keyboard::Key, SDL_Keycode> k;
|
std::map<Keyboard::Key, SDL_Keycode> k;
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ public:
|
|||||||
bool hasKeyRepeat() const;
|
bool hasKeyRepeat() const;
|
||||||
bool isDown(Key *keylist) const;
|
bool isDown(Key *keylist) const;
|
||||||
|
|
||||||
|
void setTextInput(bool enable);
|
||||||
|
bool hasTextInput() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool key_repeat;
|
bool key_repeat;
|
||||||
|
|||||||
@@ -62,11 +62,25 @@ int w_isDown(lua_State *L)
|
|||||||
return 1;
|
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.
|
// List of functions to wrap.
|
||||||
static const luaL_Reg functions[] =
|
static const luaL_Reg functions[] =
|
||||||
{
|
{
|
||||||
{ "setKeyRepeat", w_setKeyRepeat },
|
{ "setKeyRepeat", w_setKeyRepeat },
|
||||||
{ "hasKeyRepeat", w_hasKeyRepeat },
|
{ "hasKeyRepeat", w_hasKeyRepeat },
|
||||||
|
{ "setTextInput", w_setTextInput },
|
||||||
|
{ "hasTextInput", w_hasTextInput },
|
||||||
{ "isDown", w_isDown },
|
{ "isDown", w_isDown },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ namespace keyboard
|
|||||||
int w_setKeyRepeat(lua_State *L);
|
int w_setKeyRepeat(lua_State *L);
|
||||||
int w_hasKeyRepeat(lua_State *L);
|
int w_hasKeyRepeat(lua_State *L);
|
||||||
int w_isDown(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);
|
extern "C" LOVE_EXPORT int luaopen_love_keyboard(lua_State *L);
|
||||||
|
|
||||||
} // keyboard
|
} // keyboard
|
||||||
|
|||||||
Reference in New Issue
Block a user