X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xoptions.c;h=e952b52fbfe54fabd45f08d09a6a9edfea8df56d;hb=0f1e1c0cb45d785f6c8bd3c586d6be7cd0d9e97b;hp=2043e40ece3d44e0d18ae7fa0a9136029707b0ad;hpb=fd137f5c6464e66277c5e427c6cebca1b6527fd8;p=xboard.git diff --git a/xoptions.c b/xoptions.c index 2043e40..e952b52 100644 --- a/xoptions.c +++ b/xoptions.c @@ -447,9 +447,23 @@ char *translationTable[] = { // beware: order is essential! filterTranslations, gameListTranslations, memoTranslations }; +Option *typeIn; // kludge to distinguish type-in callback from input-box callback + static gboolean -ICSKeyEvent(GtkWidget *widget, GdkEventKey *event) +ICSKeyEvent(GtkWidget *widget, GdkEventKey *event, gpointer g) { + Option *opt = (Option *) g; + if(opt == typeIn) { + if(event->keyval == GDK_Return) { + char *val; + GetWidgetText(opt, &val); + TypeInDoneEvent(val); + PopDown(TransientDlg); + return TRUE; + } + return FALSE; + } + switch(event->keyval) { case GDK_Return: IcsKey(0); return TRUE; case GDK_Up: IcsKey(1); return TRUE; @@ -599,15 +613,18 @@ AddHandler (Option *opt, DialogClass dlg, int nr) switch(nr) { case 0: // history (now uses generic textview callback) case 1: // comment (likewise) - case 2: break; + break; + case 2: // move type-in + typeIn = opt; case 3: // input box - g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (ICSKeyEvent), NULL); break; // Input Box + g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (ICSKeyEvent), (gpointer) opt); + break; case 5: // game list g_signal_connect(opt->handle, "button-press-event", G_CALLBACK (GameListEvent), (gpointer) 0 ); case 4: // game-list filter g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (GameListEvent), (gpointer) nr ); break; - case 6: + case 6: // engine output (uses generic textview callback) break; } }