summaryrefslogtreecommitdiff
path: root/src/video
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2007-06-30 15:02:21 +0000
committerglx <glx@openttd.org>2007-06-30 15:02:21 +0000
commit69586c94aeed32153d1b26f5877c741fb4a38222 (patch)
tree33a79b0af196407e6ab8c36be41633308ccb9415 /src/video
parent9043900ed64eaafd15f44c42ac53bb7ee60495fa (diff)
downloadopenttd-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.cpp25
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);
}