summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarkvater <darkvater@openttd.org>2006-08-13 10:22:34 +0000
committerDarkvater <darkvater@openttd.org>2006-08-13 10:22:34 +0000
commite885129ab8e8bb0336a6791c8d1e062fffb3120a (patch)
tree44075680e2b4f3d696addfa2d04ea49301f8d9fc
parent0daa7cdaed81f520e66690136352d890e7d7a623 (diff)
downloadopenttd-e885129ab8e8bb0336a6791c8d1e062fffb3120a.tar.xz
(svn r5874) -Feature [FS#234]: Remember the maximized state and restore on start. This also fixes a bug where a different resolution is chosen for a maximized window, but it retains the maximized flag. Only win32.
-rw-r--r--settings.c3
-rw-r--r--video/win32_v.c12
2 files changed, 12 insertions, 3 deletions
diff --git a/settings.c b/settings.c
index 5e7faae11..848d8d699 100644
--- a/settings.c
+++ b/settings.c
@@ -1157,7 +1157,7 @@ static const SettingDesc _music_settings[] = {
/* win32_v.c only settings */
#ifdef WIN32
-extern bool _force_full_redraw, _double_size;
+extern bool _force_full_redraw, _double_size, _window_maximize;
extern uint _display_hz, _fullscreen_bpp;
static const SettingDescGlobVarList _win32_settings[] = {
@@ -1165,6 +1165,7 @@ static const SettingDescGlobVarList _win32_settings[] = {
SDTG_BOOL("force_full_redraw", S, 0, _force_full_redraw,false, STR_NULL, NULL),
SDTG_VAR("fullscreen_bpp", SLE_UINT, S, 0, _fullscreen_bpp, 8, 8, 32, STR_NULL, NULL),
SDTG_BOOL("double_size", S, 0, _double_size, false, STR_NULL, NULL),
+ SDTG_BOOL("window_maximize", S, 0, _window_maximize, false, STR_NULL, NULL),
SDTG_END()
};
#endif /* WIN32 */
diff --git a/video/win32_v.c b/video/win32_v.c
index 7f05406c3..4d25b6e65 100644
--- a/video/win32_v.c
+++ b/video/win32_v.c
@@ -29,6 +29,7 @@ static struct {
bool _force_full_redraw;
bool _double_size;
+bool _window_maximize;
uint _display_hz;
uint _fullscreen_bpp;
@@ -265,6 +266,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
} else {
AskExitGame();
}
+ _window_maximize = IsZoomed(_wnd.main_wnd);
return 0;
case WM_LBUTTONDOWN:
@@ -565,6 +567,7 @@ static void MakeWindow(bool full_screen)
y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2;
if (_wnd.main_wnd) {
+ ShowWindow(_wnd.main_wnd, SW_SHOWNORMAL); // remove maximize-flag
SetWindowPos(_wnd.main_wnd, 0, x, y, w, h, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER);
} else {
char Windowtitle[50];
@@ -572,8 +575,13 @@ static void MakeWindow(bool full_screen)
snprintf(Windowtitle, lengthof(Windowtitle), "OpenTTD %s", _openttd_revision);
_wnd.main_wnd = CreateWindow("OTTD", Windowtitle, style, x, y, w, h, 0, 0, GetModuleHandle(NULL), 0);
- if (_wnd.main_wnd == NULL)
- error("CreateWindow failed");
+ 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