X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=dialogs.c;h=8a6a4dddf7e31c2f1ceb11a4a6251f41a3cbb10c;hb=0278ebc80411a20fd23303156285e55ce8d2b0a5;hp=36f9abd561088dea505acea4224ae2083de300c6;hpb=f9a3457160eff1dd7f7fde47a267d677ff41b4ec;p=xboard.git diff --git a/dialogs.c b/dialogs.c index 36f9abd..8a6a4dd 100644 --- a/dialogs.c +++ b/dialogs.c @@ -1,7 +1,7 @@ /* * dialogs.c -- platform-independent code for dialogs of XBoard * - * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard is free software: you can redistribute it and/or modify @@ -1900,6 +1900,9 @@ IcsHist (int n, Option *opt, DialogClass dlg) if(opt != &chatOptions[CHAT_IN] && !(opt == &chatOptions[CHAT_PARTNER] && n == 33)) return 0; switch(n) { + case 5: + if(!hidden) ClearChat(); + break; case 8: if(!hidden) PaneSwitch(); break; @@ -1920,7 +1923,7 @@ IcsHist (int n, Option *opt, DialogClass dlg) while(!dirty[chat = (chat + 1)%MAX_CHAT]) if(chat == start) break; if(!dirty[chat]) while(!chatPartner[chat = (chat + 1)%MAX_CHAT][0]) if(chat == start) break; - if(chat == start && hidden) chat = 0; // if all unused, start left + if(!chatPartner[chat][0]) break; // if all unused, ignore ChatSwitch(chat + 1); break; case 1: @@ -1959,11 +1962,12 @@ ChatOK (int n) { // can only be called through in chat-partner text-edit, as there is no OK button char buf[MSG_SIZ]; - if(!hidden && (!partner || strcmp(partner, chatPartner[activePartner]))) { + if(!hidden && (!partner || strcmp(partner, chatPartner[activePartner]) || !*partner)) { safeStrCpy(chatPartner[activePartner], partner, MSG_SIZ); SetWidgetText(&chatOptions[CHAT_OUT], "", -1); // clear text if we alter partner SetWidgetText(&chatOptions[CHAT_IN], "", ChatDlg); // clear text if we alter partner SetWidgetLabel(&chatOptions[activePartner+1], chatPartner[activePartner][0] ? chatPartner[activePartner] : _("New Chat")); + if(!*partner) PaneSwitch(); HardSetFocus(&chatOptions[CHAT_IN], 0); } if(line[0] || hidden) { // something was typed (for ICS commands we also allow empty line!) @@ -1976,6 +1980,10 @@ ChatOK (int n) snprintf(buf, MSG_SIZ, "whisper %s\n", line); // WHISPER box uses "whisper" to send else if(!strcmp("shouts", chatPartner[activePartner])) snprintf(buf, MSG_SIZ, "shout %s\n", line); // SHOUT box uses "shout" to send + else if(!strcmp("c-shouts", chatPartner[activePartner])) + snprintf(buf, MSG_SIZ, "cshout %s\n", line); // C-SHOUT box uses "cshout" to send + else if(!strcmp("kibitzes", chatPartner[activePartner])) + snprintf(buf, MSG_SIZ, "kibitz %s\n", line); // KIBITZ box uses "kibitz" to send else { if(!atoi(chatPartner[activePartner])) { snprintf(buf, MSG_SIZ, "> %s\n", line); // echo only tells to handle, not channel