mirror of https://github.com/OpenTTD/OpenTTD
(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.
parent
0daa7cdaed
commit
e885129ab8
|
@ -1157,7 +1157,7 @@ static const SettingDesc _music_settings[] = {
|
||||||
|
|
||||||
/* win32_v.c only settings */
|
/* win32_v.c only settings */
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
extern bool _force_full_redraw, _double_size;
|
extern bool _force_full_redraw, _double_size, _window_maximize;
|
||||||
extern uint _display_hz, _fullscreen_bpp;
|
extern uint _display_hz, _fullscreen_bpp;
|
||||||
|
|
||||||
static const SettingDescGlobVarList _win32_settings[] = {
|
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_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_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("double_size", S, 0, _double_size, false, STR_NULL, NULL),
|
||||||
|
SDTG_BOOL("window_maximize", S, 0, _window_maximize, false, STR_NULL, NULL),
|
||||||
SDTG_END()
|
SDTG_END()
|
||||||
};
|
};
|
||||||
#endif /* WIN32 */
|
#endif /* WIN32 */
|
||||||
|
|
|
@ -29,6 +29,7 @@ static struct {
|
||||||
|
|
||||||
bool _force_full_redraw;
|
bool _force_full_redraw;
|
||||||
bool _double_size;
|
bool _double_size;
|
||||||
|
bool _window_maximize;
|
||||||
uint _display_hz;
|
uint _display_hz;
|
||||||
uint _fullscreen_bpp;
|
uint _fullscreen_bpp;
|
||||||
|
|
||||||
|
@ -265,6 +266,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
|
||||||
} else {
|
} else {
|
||||||
AskExitGame();
|
AskExitGame();
|
||||||
}
|
}
|
||||||
|
_window_maximize = IsZoomed(_wnd.main_wnd);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
|
@ -565,6 +567,7 @@ static void MakeWindow(bool full_screen)
|
||||||
y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2;
|
y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2;
|
||||||
|
|
||||||
if (_wnd.main_wnd) {
|
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);
|
SetWindowPos(_wnd.main_wnd, 0, x, y, w, h, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER);
|
||||||
} else {
|
} else {
|
||||||
char Windowtitle[50];
|
char Windowtitle[50];
|
||||||
|
@ -572,8 +575,13 @@ static void MakeWindow(bool full_screen)
|
||||||
snprintf(Windowtitle, lengthof(Windowtitle), "OpenTTD %s", _openttd_revision);
|
snprintf(Windowtitle, lengthof(Windowtitle), "OpenTTD %s", _openttd_revision);
|
||||||
|
|
||||||
_wnd.main_wnd = CreateWindow("OTTD", Windowtitle, style, x, y, w, h, 0, 0, GetModuleHandle(NULL), 0);
|
_wnd.main_wnd = CreateWindow("OTTD", Windowtitle, style, x, y, w, h, 0, 0, GetModuleHandle(NULL), 0);
|
||||||
if (_wnd.main_wnd == NULL)
|
if (_wnd.main_wnd == NULL) error("CreateWindow failed");
|
||||||
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
|
GameSizeChanged(); // invalidate all windows, force redraw
|
||||||
|
|
Loading…
Reference in New Issue