*\r
* Author: H.G.Muller (August 2009)\r
*\r
- * Copyright 2009, 2010 Free Software Foundation, Inc. \r
+ * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.\r
*\r
* ------------------------------------------------------------------------\r
*\r
\r
extern HINSTANCE hInst;\r
extern HWND hwndConsole;\r
+extern char ics_handle[];\r
\r
extern WindowPlacement wpChat[MAX_CHAT];\r
extern WindowPlacement wpConsole;\r
\r
switch (message) {\r
case WM_INITDIALOG:\r
+ Translate(hDlg, DLG_Chat);\r
if(partner<0) {\r
for(i=0; i<MAX_CHAT; i++) if(chatHandle[i] == NULL) { partner = i; break; }\r
chatHandle[partner] = hDlg;\r
- sprintf(buf, "Chat Window %s", first.tidy);\r
+ snprintf(buf, MSG_SIZ, T_("Chat Window %s"), ics_handle[0] ? ics_handle : first.tidy);\r
SetWindowText(hDlg, buf);\r
}\r
for(i=0; i<MAX_CHAT; i++) if(chatHandle[i]) {\r
SendMessage(hMemo, EM_SETEVENTMASK, 0, wMask | ENM_LINK);\r
SendMessage(hMemo, EM_AUTOURLDETECT, TRUE, 0L);\r
chatInputWindowProc = (WNDPROC) // cloned from ConsoleWndProc(). Assume they all share same proc.\r
- SetWindowLong(GetDlgItem(hDlg, OPT_ChatInput), GWL_WNDPROC, (LONG) InterceptArrowKeys);\r
+ SetWindowLongPtr(GetDlgItem(hDlg, OPT_ChatInput), GWLP_WNDPROC, (LONG_PTR) InterceptArrowKeys);\r
return FALSE;\r
\r
case WM_NOTIFY:\r
break;\r
\r
case WM_COMMAND:\r
- /* \r
+ /*\r
[AS]\r
If <Enter> is pressed while editing the filter, it's better to apply\r
the filter rather than selecting the current game.\r
// from here on it could be back-end\r
SaveInHistory(mess);\r
if(!strcmp("whispers", chatPartner[partner]))\r
- sprintf(buf, "whisper %s\n", mess); // WHISPER box uses "whisper" to send\r
+ snprintf(buf, MSG_SIZ, "whisper %s\n", mess); // WHISPER box uses "whisper" to send\r
else if(!strcmp("shouts", chatPartner[partner]))\r
- sprintf(buf, "shout %s\n", mess); // SHOUT box uses "shout" to send\r
+ snprintf(buf, MSG_SIZ, "shout %s\n", mess); // SHOUT box uses "shout" to send\r
else {\r
if(!atoi(chatPartner[partner])) {\r
- sprintf(buf, "> %s\r\n", mess); // echo only tells to handle, not channel\r
+ snprintf(buf, MSG_SIZ, "> %s\r\n", mess); // echo only tells to handle, not channel\r
InsertIntoMemo(hDlg, buf);\r
- sprintf(buf, "xtell %s %s\n", chatPartner[partner], mess);\r
+ snprintf(buf, MSG_SIZ, "xtell %s %s\n", chatPartner[partner], mess);\r
} else\r
- sprintf(buf, "tell %s %s\n", chatPartner[partner], mess);\r
+ snprintf(buf, MSG_SIZ, "tell %s %s\n", chatPartner[partner], mess);\r
}\r
SendToICS(buf);\r
break;\r
{\r
FARPROC lpProc;\r
int i, partner = -1;\r
- \r
+ char buf[MSG_SIZ];\r
+ static int first = 1;\r
+\r
CheckMenuItem(GetMenu(hwndMain), IDM_NewChat, MF_CHECKED);\r
for(i=0; i<MAX_CHAT; i++) if(chatHandle[i] == NULL) { partner = i; break; }\r
if(partner == -1) { DisplayError("You first have to close a Chat Box\nbefore you can open a new one", 0); return; }\r
- if(icsHandle) // [HGM] clickbox set handle in advance\r
- strcpy(chatPartner[partner], icsHandle);\r
- else chatPartner[partner][0] = NULLCHAR;\r
+ if(icsHandle) { // [HGM] clickbox set handle in advance\r
+ safeStrCpy(chatPartner[partner], icsHandle,\r
+ sizeof(chatPartner[partner])/sizeof(chatPartner[partner][0]) );\r
+ if(sscanf(icsHandle, "%d", &i) == 1) { // make sure channel is on\r
+ snprintf(buf, MSG_SIZ, "addlist ch %d\n", i);\r
+ SendToICS(buf);\r
+ if(first) first=0, SendToICS(buf); // work-around for weirdness: On public FICS code first attempt on login is completely ignored\r
+ }\r
+ } else chatPartner[partner][0] = NULLCHAR;\r
chatCount++;\r
\r
lpProc = MakeProcInstance( (FARPROC) ChatProc, hInst );\r