From 574250995ecf9ce06f532b0972024b14355e6d43 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 18 Jun 2005 08:52:50 +0000 Subject: [PATCH] Just noticed yesterday that initial window sizing is broken on Windows for puzzles with status bars, because the initial call to check_window_size is given the window size _without_ the status bar and assumes that that has to be big enough for the whole thing _with_ the status bar, so it shrinks everything by a little bit. So now we resize the window to take account of the status bar before calling check_window_size(), and the problem seems to have gone away. [originally from svn r5975] --- windows.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/windows.c b/windows.c index 30d223d..b93847d 100644 --- a/windows.c +++ b/windows.c @@ -522,13 +522,23 @@ static frontend *new_window(HINSTANCE inst, char *game_id, char **error) r.right - r.left, r.bottom - r.top, NULL, NULL, inst, NULL); - if (midend_wants_statusbar(fe->me)) + if (midend_wants_statusbar(fe->me)) { + RECT sr; fe->statusbar = CreateWindowEx(0, STATUSCLASSNAME, "ooh", WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, /* status bar does these */ fe->hwnd, NULL, inst, NULL); - else + /* + * Now resize the window to take account of the status bar. + */ + GetWindowRect(fe->statusbar, &sr); + GetWindowRect(fe->hwnd, &r); + SetWindowPos(fe->hwnd, NULL, 0, 0, r.right - r.left, + r.bottom - r.top + sr.bottom - sr.top, + SWP_NOMOVE | SWP_NOZORDER); + } else { fe->statusbar = NULL; + } { HMENU bar = CreateMenu();