Prevent duplicate calls to start/stop text input

This commit is contained in:
Sam Lantinga
2024-06-27 10:49:24 -07:00
parent 3609b15920
commit b7748c1513

View File

@@ -5032,13 +5032,15 @@ int SDL_StartTextInput(SDL_Window *window)
}
}
/* Finally start the text input system */
if (_this->StartTextInput) {
if (_this->StartTextInput(_this, window) < 0) {
return -1;
if (!window->text_input_active) {
/* Finally start the text input system */
if (_this->StartTextInput) {
if (_this->StartTextInput(_this, window) < 0) {
return -1;
}
}
window->text_input_active = SDL_TRUE;
}
window->text_input_active = SDL_TRUE;
return 0;
}
@@ -5053,11 +5055,13 @@ int SDL_StopTextInput(SDL_Window *window)
{
CHECK_WINDOW_MAGIC(window, -1);
/* Stop the text input system */
if (_this->StopTextInput) {
_this->StopTextInput(_this, window);
if (window->text_input_active) {
/* Stop the text input system */
if (_this->StopTextInput) {
_this->StopTextInput(_this, window);
}
window->text_input_active = SDL_FALSE;
}
window->text_input_active = SDL_FALSE;
/* Hide the on-screen keyboard, if desired */
const char *hint = SDL_GetHint(SDL_HINT_ENABLE_SCREEN_KEYBOARD);