Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

We can't check for the screen keyboard in the event code because the …

…video system isn't fully initialized yet.
  • Loading branch information
slouken committed Nov 9, 2012
1 parent c31aec7 commit 92b2d880f1bc3d01d614e45de906f19329181f2e
Showing with 18 additions and 6 deletions.
  1. +2 −6 src/events/SDL_events.c
  2. +16 −0 src/video/SDL_video.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) {
@@ -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

0 comments on commit 92b2d88

Please sign in to comment.