Fix window-position upset on failing engine start in WinBoard
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 24 Mar 2010 10:04:00 +0000 (11:04 +0100)
committerArun Persaud <arun@nubati.net>
Thu, 25 Mar 2010 05:43:41 +0000 (22:43 -0700)
The main window was only positoned according to the settings-file data
after the engine was started up from InitBackend2(), so that if the
latter gave a fatal error, and Save Settings on Exit was on, a wrong
position for the main window would be saved. The call to InitBackend2()
is now moved until after setting the main-window position.

winboard/winboard.c

index e943a22..e7e4ca7 100644 (file)
@@ -836,8 +836,6 @@ InitInstance(HINSTANCE hInstance, int nCmdShow, LPSTR lpCmdLine)
       EngineOutputPopUp();\r
   }\r
 \r
-  InitBackEnd2();\r
-\r
   /* Make the window visible; update its client area; and return "success" */\r
   EnsureOnScreen(&wpMain.x, &wpMain.y, minX, minY);\r
   wp.length = sizeof(WINDOWPLACEMENT);\r
@@ -850,6 +848,8 @@ InitInstance(HINSTANCE hInstance, int nCmdShow, LPSTR lpCmdLine)
   wp.rcNormalPosition.bottom = wpMain.y + wpMain.height;\r
   SetWindowPlacement(hwndMain, &wp);\r
 \r
+  InitBackEnd2(); // [HGM] moved until after all windows placed, to save correct position if fatal error on engine start\r
+\r
   if(!appData.noGUI) SetWindowPos(hwndMain, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST,\r
                0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);\r
 \r