We can't check for the screen keyboard in the event code because the video system isn't fully initialized yet.

This commit is contained in:
Sam Lantinga 2012-11-09 02:18:27 -08:00
parent 9144abbf82
commit eda1373611
2 changed files with 18 additions and 6 deletions

View file

@ -125,14 +125,10 @@ SDL_StartEventLoop(void)
/* No filter to start with, process most event types */
SDL_EventOK = NULL;
SDL_EventState(SDL_TEXTINPUT, SDL_DISABLE);
SDL_EventState(SDL_TEXTEDITING, SDL_DISABLE);
SDL_EventState(SDL_SYSWMEVENT, SDL_DISABLE);
/* If text input shows UI onscreen we want to start with it disabled */
if (SDL_HasScreenKeyboardSupport()) {
SDL_EventState(SDL_TEXTINPUT, SDL_DISABLE);
SDL_EventState(SDL_TEXTEDITING, SDL_DISABLE);
}
/* Create the lock and set ourselves active */
#if !SDL_THREADS_DISABLED
if (!SDL_EventQ.lock) {

View file

@ -522,6 +522,17 @@ SDL_VideoInit(const char *driver_name)
_this->DestroyWindowFramebuffer = SDL_DestroyWindowTexture;
}
/* If we don't use a screen keyboard, turn on text input by default,
otherwise programs that expect to get text events without enabling
UNICODE input won't get any events.
Actually, come to think of it, you needed to call SDL_EnableUNICODE(1)
in SDL 1.2 before you got text input events. Hmm...
*/
if (!SDL_HasScreenKeyboardSupport()) {
SDL_StartTextInput();
}
/* We're ready to go! */
return 0;
}
@ -2831,7 +2842,12 @@ SDL_HasScreenKeyboardSupport(void)
if (_this && _this->SDL_HasScreenKeyboardSupport) {
return _this->SDL_HasScreenKeyboardSupport(_this);
}
/* FIXME: The event system queries this before we initialize our video driver */
#if __IPHONEOS__ || __ANDROID__
return SDL_TRUE;
#else
return SDL_FALSE;
#endif
}
SDL_bool