Let ICS Console pop up GTK in stead of ICS Input Box
authorH.G. Muller <h.g.muller@hccnet.nl>
Mon, 3 Feb 2014 19:35:31 +0000 (20:35 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 2 Mar 2014 17:48:55 +0000 (18:48 +0100)
dialogs.c
dialogs.h
gtk/xboard.c

index 16d4d19..e93e736 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -1325,7 +1325,7 @@ PopUpMoveDialog (char firstchar)
 
 void
 BoxAutoPopUp (char *buf)
-{
+{       // only used in Xaw. GTK calls ConsoleAutoPopUp in stead (when we type to board)
        if(!appData.autoBox) return;
        if(appData.icsActive) { // text typed to board in ICS mode: divert to ICS input box
            if(DialogExists(InputBoxDlg)) { // box already exists: append to current contents
@@ -1914,6 +1914,23 @@ ChatProc ()
        AddHandler(&chatOptions[CHAT_PARTNER], ChatDlg, 2), AddHandler(&chatOptions[CHAT_IN], ChatDlg, 2); // treats return as OK
     PaneSwitch(); HardSetFocus(&chatOptions[CHAT_IN]);
     MarkMenu("View.OpenChatWindow", ChatDlg);
+    CursorAtEnd(&chatOptions[CHAT_IN]);
+}
+
+void
+ConsoleAutoPopUp (char *buf)
+{
+       if(!appData.autoBox) return;
+       if(appData.icsActive) { // text typed to board in ICS mode: divert to ICS input box
+           if(DialogExists(ChatDlg)) { // box already exists: append to current contents
+               char *p, newText[MSG_SIZ];
+               GetWidgetText(&chatOptions[CHAT_IN], &p);
+               snprintf(newText, MSG_SIZ, "%s%c", p, *buf);
+               SetWidgetText(&chatOptions[CHAT_IN], newText, ChatDlg);
+               if(shellUp[ChatDlg]) HardSetFocus (&boxOptions[CHAT_IN]); //why???
+           } else { ASSIGN(line, buf); } // box did not exist: make sure it pops up with char in it
+           ChatProc();
+       } else PopUpMoveDialog(*buf);
 }
 
 //--------------------------------- Game-List options dialog ------------------------------------------
index 449069e..87be680 100644 (file)
--- a/dialogs.h
+++ b/dialogs.h
@@ -189,6 +189,7 @@ void SlaveResize P((Option *opt));
 
 int  SetCurrentComboSelection P((Option *opt));
 void BoxAutoPopUp P((char *buf));
+void ConsoleAutoPopUp P((char *buf));
 void IcsKey P((int n));
 void ICSInputBoxPopUp P((void));
 void LoadOptionsPopUp P((DialogClass parent));
index 7abd7ce..aff56cc 100644 (file)
@@ -1788,7 +1788,7 @@ void MoveTypeInProc(eventkey)
     buf[0]=eventkey->keyval;
     buf[1]='\0';
     if (eventkey->keyval > 32 && eventkey->keyval < 256)
-       BoxAutoPopUp (buf);
+       ConsoleAutoPopUp (buf);
 }
 
 #ifdef TODO_GTK