1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00

Added workaround for weird SDL behavior that causes SDL to report text

input as active when app starts until first actual text input
This commit is contained in:
Ivan Savenko 2024-04-11 22:00:20 +03:00
parent 16c56cf6c5
commit 611249d11d
3 changed files with 10 additions and 1 deletions

View File

@ -21,6 +21,13 @@
#include <SDL_events.h>
InputSourceText::InputSourceText()
{
// For whatever reason, in SDL text input is considered to be active by default at least on desktop platforms
// Apparently fixed in SDL3, but until then we need a workaround
SDL_StopTextInput();
}
void InputSourceText::handleEventTextInput(const SDL_TextInputEvent & text)
{
GH.events().dispatchTextInput(text.text);

View File

@ -21,6 +21,8 @@ struct SDL_TextInputEvent;
class InputSourceText
{
public:
InputSourceText();
void handleEventTextInput(const SDL_TextInputEvent & current);
void handleEventTextEditing(const SDL_TextEditingEvent & current);

View File

@ -72,11 +72,11 @@ void CGuiHandler::init()
{
inGuiThread = true;
inputHandlerInstance = std::make_unique<InputHandler>();
eventDispatcherInstance = std::make_unique<EventDispatcher>();
windowHandlerInstance = std::make_unique<WindowHandler>();
screenHandlerInstance = std::make_unique<ScreenHandler>();
renderHandlerInstance = std::make_unique<RenderHandler>();
inputHandlerInstance = std::make_unique<InputHandler>(); // Must be after windowHandlerInstance
shortcutsHandlerInstance = std::make_unique<ShortcutHandler>();
framerateManagerInstance = std::make_unique<FramerateManager>(settings["video"]["targetfps"].Integer());
}