(svn r10400) [0.5] -Backport from trunk (r10399): 0.5
authorglx
Sat, 30 Jun 2007 15:13:55 +0000
branch0.5
changeset 5523 830e723086fa
parent 5522 faeba89423b5
child 5524 137860f300b2
(svn r10400) [0.5] -Backport from trunk (r10399):
- Fix: [Windows] _wnd.has_focus was not properly set after using ALT-TAB [FS#962] (r10399)
video/win32_v.c
--- a/video/win32_v.c	Fri Jun 29 00:26:10 2007 +0000
+++ b/video/win32_v.c	Sat Jun 30 15:13:55 2007 +0000
@@ -24,7 +24,6 @@
 	int height;
 	int width_org;
 	int height_org;
-	bool minimized;
 	bool fullscreen;
 	bool double_size;
 	bool has_focus;
@@ -512,8 +511,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));
@@ -611,23 +609,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);
 }