From 18d35f5bf0130482312657eb00d8225105c15e5f Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Mon, 17 Sep 2018 23:28:37 +0200 Subject: [PATCH] Win32+SDL : consider ALT as not pressed when gaining back keyboard focus see https://pulkomandy.tk/projects/GrafX2/ticket/63 --- src/input.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/input.c b/src/input.c index ba467009..d9bb87d9 100644 --- a/src/input.c +++ b/src/input.c @@ -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: