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:
parent
16c56cf6c5
commit
611249d11d
@ -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);
|
||||
|
@ -21,6 +21,8 @@ struct SDL_TextInputEvent;
|
||||
class InputSourceText
|
||||
{
|
||||
public:
|
||||
InputSourceText();
|
||||
|
||||
void handleEventTextInput(const SDL_TextInputEvent & current);
|
||||
void handleEventTextEditing(const SDL_TextEditingEvent & current);
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user