Just noticed yesterday that initial window sizing is broken on
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 18 Jun 2005 08:52:50 +0000 (08:52 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 18 Jun 2005 08:52:50 +0000 (08:52 +0000)
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.

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@5975 cda61777-01e9-0310-a592-d414129be87e

windows.c

index 30d223d..b93847d 100644 (file)
--- 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();