# HG changeset patch # User glx # Date 1183215741 0 # Node ID 6c1f274be84e34f6f4918b8e316ce086f9881b82 # Parent ef3b4aaf994fd6cf8e1cf9654989efdf7e96b2ca (svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB diff -r ef3b4aaf994f -r 6c1f274be84e src/video/win32_v.cpp --- a/src/video/win32_v.cpp Sat Jun 30 11:28:26 2007 +0000 +++ b/src/video/win32_v.cpp Sat Jun 30 15:02:21 2007 +0000 @@ -23,7 +23,6 @@ int height; int width_org; int height_org; - bool minimized; bool fullscreen; bool has_focus; bool running; @@ -508,8 +507,7 @@ break; case WM_SIZE: - _wnd.minimized = (wParam == SIZE_MINIMIZED); - if (!_wnd.minimized) { + if (wParam != SIZE_MINIMIZED) { /* Set maximized flag when we maximize (obviously), but also when we * switched to fullscreen from a maximized state */ _window_maximize = (wParam == SIZE_MAXIMIZED || (_window_maximize && _fullscreen)); @@ -601,23 +599,34 @@ return 0; } - case WM_ACTIVATEAPP: - _wnd.has_focus = (wParam != 0); + case WM_SETFOCUS: + _wnd.has_focus = true; + break; + + case WM_KILLFOCUS: + _wnd.has_focus = false; + break; + #if !defined(WINCE) + case WM_ACTIVATE: { + bool active = (LOWORD(wParam) != WA_INACTIVE); + bool minimized = (HIWORD(wParam) != 0); if (_wnd.fullscreen) { - if (_wnd.has_focus && _wnd.minimized) { + if (active && minimized) { /* Restore the game window */ ShowWindow(hwnd, SW_RESTORE); MakeWindow(true); - } else if (!_wnd.has_focus && !_wnd.minimized) { + } else if (!active && !minimized) { /* Minimise the window and restore desktop */ ShowWindow(hwnd, SW_MINIMIZE); ChangeDisplaySettings(NULL, 0); } } + break; + } + } #endif - break; - } + return DefWindowProc(hwnd, msg, wParam, lParam); }