added code to handle initial width update
[xboard.git] / winboard / winboard.c
index 6c5d0ee..af08df3 100644 (file)
@@ -5456,6 +5456,29 @@ LoadGameDialog(HWND hwnd, char* title)
   }\r
 }\r
 \r
+void UpdateICSWidth(HWND hText)\r
+{\r
+       HDC hdc;\r
+       TEXTMETRIC tm;\r
+       RECT rc;\r
+       HFONT hfont, hold_font;\r
+       \r
+       // get the text metrics\r
+       hdc = GetDC(hText);\r
+       hfont = CreateFontIndirect(&font[boardSize][CONSOLE_FONT]->lf);\r
+       hold_font = SelectObject(hdc, hfont);\r
+       GetTextMetrics(hdc, &tm);\r
+       SelectObject(hdc, hold_font);\r
+       DeleteObject(hfont);\r
+       ReleaseDC(hText, hdc);\r
+\r
+       // get the rectangle\r
+       SendMessage(hText, EM_GETRECT, 0, (LPARAM)&rc);\r
+\r
+       // update the width\r
+       ics_update_width((rc.right-rc.left) / tm.tmAveCharWidth);\r
+}\r
+\r
 VOID\r
 ChangedConsoleFont()\r
 {\r
@@ -5495,6 +5518,7 @@ ChangedConsoleFont()
   paraf.dxOffset = WRAP_INDENT;\r
   SendMessage(hText, EM_SETPARAFORMAT, 0, (LPARAM) &paraf);\r
   SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel);\r
+  UpdateICSWidth(hText);\r
 }\r
 \r
 /*---------------------------------------------------------------------------*\\r
@@ -8099,14 +8123,16 @@ LRESULT CALLBACK
 ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
 {\r
   static SnapData sd;\r
-  static HWND hText, hInput /*, hFocus*/;\r
-//  InputSource *is = consoleInputSource;\r
+  HWND hText, hInput;\r
   RECT rect;\r
   static int sizeX, sizeY;\r
   int newSizeX, newSizeY;\r
   MINMAXINFO *mmi;\r
   WORD wMask;\r
 \r
+  hText = GetDlgItem(hDlg, OPT_ConsoleText);\r
+  hInput = GetDlgItem(hDlg, OPT_ConsoleInput);\r
+\r
   switch (message) {\r
   case WM_NOTIFY:\r
     if (((NMHDR*)lParam)->code == EN_LINK)\r
@@ -8126,8 +8152,6 @@ ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
     break;\r
   case WM_INITDIALOG: /* message: initialize dialog box */\r
     hwndConsole = hDlg;\r
-    hText = GetDlgItem(hDlg, OPT_ConsoleText);\r
-    hInput = GetDlgItem(hDlg, OPT_ConsoleInput);\r
     SetFocus(hInput);\r
     consoleTextWindowProc = (WNDPROC)\r
       SetWindowLong(hText, GWL_WNDPROC, (LONG) ConsoleTextSubclass);\r
@@ -8239,6 +8263,7 @@ ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
     return OnMoving( &sd, hDlg, wParam, lParam );\r
 \r
   case WM_EXITSIZEMOVE:\r
+       UpdateICSWidth(hText);\r
     return OnExitSizeMove( &sd, hDlg, wParam, lParam );\r
   }\r
 \r
@@ -9509,6 +9534,11 @@ DrawPosition(int fullRedraw, Board board)
   HDCDrawPosition(NULL, (BOOLEAN) fullRedraw, board); \r
 }\r
 \r
+void NotifyFrontendLogin()\r
+{\r
+       if (hwndConsole)\r
+               UpdateICSWidth(GetDlgItem(hwndConsole, OPT_ConsoleText));\r
+}\r
 \r
 VOID\r
 ResetFrontEnd()\r