diff options
author | glx <glx@openttd.org> | 2007-06-30 15:02:21 +0000 |
---|---|---|
committer | glx <glx@openttd.org> | 2007-06-30 15:02:21 +0000 |
commit | 69586c94aeed32153d1b26f5877c741fb4a38222 (patch) | |
tree | 33a79b0af196407e6ab8c36be41633308ccb9415 /src/video | |
parent | 9043900ed64eaafd15f44c42ac53bb7ee60495fa (diff) | |
download | openttd-69586c94aeed32153d1b26f5877c741fb4a38222.tar.xz |
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
Diffstat (limited to 'src/video')
-rw-r--r-- | src/video/win32_v.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 987a4a6ff..7fa306ff3 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -23,7 +23,6 @@ static struct { int height; int width_org; int height_org; - bool minimized; bool fullscreen; bool has_focus; bool running; @@ -508,8 +507,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP 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 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP 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); } } -#endif break; + } } +#endif + return DefWindowProc(hwnd, msg, wParam, lParam); } |