Win32+SDL : consider ALT as not pressed when gaining back keyboard focus

see https://pulkomandy.tk/projects/GrafX2/ticket/63
This commit is contained in:
Thomas Bernard 2018-09-17 23:28:37 +02:00
parent c4159247c8
commit 18d35f5bf0

View File

@ -1122,7 +1122,19 @@ int Get_input(int sleep_time)
{
#if defined(USE_SDL)
case SDL_ACTIVEEVENT:
GFX2_Log(GFX2_DEBUG, "SDL_ACTIVEEVENT gain=%d state=%d\n", event.active.gain, event.active.state);
GFX2_Log(GFX2_DEBUG, "SDL_ACTIVEEVENT gain=%d state=%d (%s%s%s)\n",
event.active.gain, event.active.state,
(event.active.state & SDL_APPMOUSEFOCUS)?"Mouse ":"",
(event.active.state & SDL_APPINPUTFOCUS)?"Keyboard ":"",
(event.active.state & SDL_APPACTIVE)?"Iconification":"");
#ifdef WIN32
// Work around a bug in SDL1.2 with win32
// when doing ALT-TAB to loose focus, and then gaining focus back
// by clicking on the GrafX2 window, the "ALT" key appears as still pressed
// So "depress" ALT
if (event.active.gain && (event.active.state & SDL_APPINPUTFOCUS) != 0)
SDL_SetModState(SDL_GetModState() & ~KMOD_ALT);
#endif
break;
case SDL_VIDEORESIZE: