From 92b2d880f1bc3d01d614e45de906f19329181f2e Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 9 Nov 2012 02:18:27 -0800 Subject: [PATCH] We can't check for the screen keyboard in the event code because the video system isn't fully initialized yet. --- src/events/SDL_events.c | 8 ++------ src/video/SDL_video.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 16d695cfb..4083f17b4 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -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) { diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 9bb1bf1ff..ab097bd08 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -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