char marker[BOARD_RANKS][BOARD_FILES]; /* [HGM] marks for target squares */
char legal[BOARD_RANKS][BOARD_FILES]; /* [HGM] legal target squares */
char lastMsg[MSG_SIZ];
+char lastTalker[MSG_SIZ];
ChessSquare pieceSweep = EmptySquare;
ChessSquare promoSweep = EmptySquare, defaultPromoChoice;
int promoDefaultAltered;
talker[0] = 0; Colorize(ColorTell, FALSE);
chattingPartner = p; break;
}
- if(chattingPartner<0) i = oldi; else {
+ if(chattingPartner<0) i = oldi, safeStrCpy(lastTalker, talker+1, MSG_SIZ); else {
Colorize(curColor, TRUE); // undo the bogus colorations we just made to trigger the souds
if(oldi > 0 && buf[oldi-1] == '\n') oldi--;
if (oldi > next_out) SendToPlayer(&buf[next_out], oldi - next_out);
extern Boolean mcMode;
extern int dragging;
extern char variantError[];
+extern char lastTalker[];
void MarkMenuItem P((char *menuRef, int state));
char *CmailMsg P((void));
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);
controlState = event->state & GDK_CONTROL_MASK;
switch(event->keyval) {
case 'n': return (controlState && IcsHist(14, opt, dlg));
+ case 'o': return (controlState && IcsHist(15, opt, dlg));
case GDK_Tab: IcsHist(10, opt, dlg); break;
case GDK_Up: IcsHist(1, opt, dlg); break;
case GDK_Down: IcsHist(-1, opt, dlg); break;