Let Ctrl-O key open chat for last talker
[xboard.git] / dialogs.c
index 91d752b..da4fb71 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -1714,11 +1714,12 @@ int  ChatOK P((int n));
 
 #define CHAT_ICS     6
 #define CHAT_PARTNER 8
-#define CHAT_OUT    10
-#define CHAT_PANE   11
-#define CHAT_IN     12
+#define CHAT_OUT    11
+#define CHAT_PANE   12
+#define CHAT_IN     13
 
 void PaneSwitch P((void));
+void ClearChat P((void));
 
 WindowPlacement wpTextMenu;
 
@@ -1758,6 +1759,7 @@ Option chatOptions[] = {
 { 250, T_VSCRL | T_FILL | T_WRAP | T_TOP,    510, NULL, (void*) &memo, NULL, (void*) &ContextMenu, TextBox, "" },
 {  0,  0,   0, NULL, NULL, "", NULL, Break , "" },
 { 0,   T_TOP,    100, NULL, (void*) &partner, NULL, NULL, TextBox, N_("Chat partner:") },
+{  0, SAME_ROW, 0, NULL, (void*) &ClearChat,  NULL, NULL, Button, N_("End Chat") },
 {  0, SAME_ROW, 0, NULL, (void*) &PaneSwitch, NULL, NULL, Button, N_("Hide") },
 { 250, T_VSCRL | T_FILL | T_WRAP | T_TOP,    510, NULL, (void*) &chatMemo, NULL, (void*) &ContextMenu, TextBox, "" },
 {  0,  0,   0, NULL, NULL, "", NULL, Break , "" },
@@ -1796,6 +1798,13 @@ IcsHist (int n, Option *opt, DialogClass dlg)
        if(hidden) BoardToTop();
        else PaneSwitch();
        break;
+      case 15:
+       NewChat(lastTalker);
+       break;
+      case 14:
+       for(chat=0; chat < MAX_CHAT; chat++) if(!chatPartner[chat][0]) break;
+       if(chat < MAX_CHAT) ChatSwitch(chat + 1);
+       break;
       case 10: // <Tab>
        chat = start = (activePartner - hidden + MAX_CHAT) % MAX_CHAT;
         while(!dirty[chat = (chat + 1)%MAX_CHAT]) if(chat == start) break;
@@ -1926,6 +1935,19 @@ PaneSwitch ()
 //    SetInsertPos(&chatOptions[CHAT_IN], strlen(icsLine));
 }
 
+void
+ClearChat ()
+{   // clear the chat to make it free for other use
+    chatPartner[activePartner][0] = NULLCHAR;
+    ASSIGN(texts[activePartner], "");
+    ASSIGN(inputs[activePartner], "");
+    SetWidgetText(&chatOptions[CHAT_PARTNER], "", ChatDlg);
+    SetWidgetText(&chatOptions[CHAT_OUT], "", ChatDlg);
+    SetWidgetText(&chatOptions[CHAT_IN], "", ChatDlg);
+    SetWidgetLabel(&chatOptions[activePartner+1], _("New Chat"));
+    HardSetFocus(&chatOptions[CHAT_PARTNER], 0);
+}
+
 static void
 NewChat (char *name)
 {   // open a chat on program request. If no empty one available, use last