(svn r7060) -Fix (r5874): Restore of window maximized state not always working (Mart3p) . Remember
authorDarkvater
Sun, 05 Nov 2006 01:09:57 +0000
changeset 5019 9046723a0878
parent 5018 479eff76269a
child 5020 e2564f4400b7
(svn r7060) -Fix (r5874): Restore of window maximized state not always working (Mart3p) . Remember
maximize state even between switching fullscreen/windowed mode.
video/win32_v.c
--- a/video/win32_v.c	Sat Nov 04 11:44:19 2006 +0000
+++ b/video/win32_v.c	Sun Nov 05 01:09:57 2006 +0000
@@ -255,7 +255,6 @@
 
 		case WM_CLOSE:
 			HandleExitGameRequest();
-			_window_maximize = IsZoomed(_wnd.main_wnd);
 			return 0;
 
 		case WM_LBUTTONDOWN:
@@ -390,6 +389,9 @@
 
 		case WM_SIZE:
 			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));
 				ClientSizeChanged(LOWORD(lParam), HIWORD(lParam));
 			}
 			return 0;
@@ -557,6 +559,8 @@
 			SetRect(&r, 0, 0, _wnd.width_org, _wnd.height_org);
 		} else {
 			style = WS_OVERLAPPEDWINDOW | WS_VISIBLE;
+			/* On window creation, check if we were in maximize mode before */
+			if (_window_maximize) style |= WS_MAXIMIZE;
 			SetRect(&r, 0, 0, _wnd.width, _wnd.height);
 		}
 
@@ -577,12 +581,6 @@
 
 			_wnd.main_wnd = CreateWindow("OTTD", Windowtitle, style, x, y, w, h, 0, 0, GetModuleHandle(NULL), 0);
 			if (_wnd.main_wnd == NULL) error("CreateWindow failed");
-
-			/* On startup let's see if we quit maximized the last time, restore that */
-			if (_window_maximize) {
-				ShowWindow(_wnd.main_wnd, SW_MAXIMIZE);
-				_window_maximize = false;
-			}
 		}
 	}
 	GameSizeChanged(); // invalidate all windows, force redraw