We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 1034 - SDL_GetAppState not returning correct values if ALT+TAB used in application
Summary: SDL_GetAppState not returning correct values if ALT+TAB used in application
Status: RESOLVED FIXED
Alias: None
Product: SDL
Classification: Unclassified
Component: events (show other bugs)
Version: 1.2.14
Hardware: Other Windows 7
: P2 normal
Assignee: Ryan C. Gordon
QA Contact: Sam Lantinga
URL:
Keywords:
Depends on:
Blocks: 1035
  Show dependency treegraph
 
Reported: 2010-07-28 12:59 UTC by zicodxx
Modified: 2011-12-29 01:30 UTC (History)
1 user (show)

See Also:


Attachments
Patch to fix this bug and bug 1035. (632 bytes, patch)
2011-04-28 17:31 UTC, Alex Volkov
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description zicodxx 2010-07-28 12:59:27 UTC
Again another bug I encountered on Windows 7:

Assuming I hide my mouse cusor with SDL_ShowCursor(SDL_DISABLE).
Now if my app runs on Fullscreen, I tend to "get out" of it using ALT+TAB. This will minimize the app. However SDL_GetAppState will STILL report SDL_APPACTIVE, SDL_APPINPUTFOCUS and SDL_APPMOUSEFOCUS.

Also if I check event.active.gain, this *seems* (as much as I could find out) to be set twice (first 0 then 1 again) while going out of the app with ALT+TAB. I am not perfectly sure here but even if the app is minimized because of ALT+TAB (or also CTRL+ESC), event.active.gain is 1.
Comment 1 Alex Volkov 2011-04-28 17:19:26 UTC
This happens with the windib driver. Windows posts the WM_ACTIVATE WA_INACTIVE event with minimized==false when you Alt+Tab out of a fullscreen app. Responding to this event, wincommon/SDL_sysevents.c:WinMessage() calls ShowWindow(,SW_MINIMIZE) via SDL_RestoreDesktopMode, but another WM_ACTIVATE event is not posted in response to that.
Whatever the case may be, WinMessage() should just treat a fullscreen app receiving WA_INACTIVE the same as a minimized app. Additionally, it's probably a good idea to clear SDL_APPMOUSEFOCUS at the same time, and that should take care of bug #1035.
Comment 2 Alex Volkov 2011-04-28 17:31:38 UTC
Created attachment 605 [details]
Patch to fix this bug and bug 1035.
Comment 3 Sam Lantinga 2011-12-29 01:30:37 UTC
Fixed, thanks!
http://hg.libsdl.org/SDL/rev/676a54593bc4