X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxoptions.c;h=f60f6a3734d91580c812d192c8172c84d4fc8982;hb=7d2cf8e719aefa423f406fbf094e59b37a2c7ef1;hp=d5ade4cc4d5c3f42a9f9a35952d37fc8d25611a9;hpb=7d7c05d2ca68bdd6cc55fc78a1a29c6635790987;p=xboard.git diff --git a/gtk/xoptions.c b/gtk/xoptions.c index d5ade4c..f60f6a3 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -244,7 +244,10 @@ SetWidgetState (Option *opt, int state) void SetWidgetLabel (Option *opt, char *buf) { - gtk_label_set_text(opt->handle, buf); + if(opt->type == Button) // Chat window uses this routine for changing button labels + gtk_button_set_label(opt->handle, buf); + else + gtk_label_set_text(opt->handle, buf); } void @@ -438,7 +441,7 @@ CreateMenuPopup (Option *opt, int n, int def) return menu; } -Option *typeIn; // kludge to distinguish type-in callback from input-box callback +Option *icsBox; // kludge to distinguish type-in callback from input-box callback void CursorAtEnd (Option *opt) @@ -447,21 +450,9 @@ CursorAtEnd (Option *opt) } static gboolean -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) { +ICSKeyEvent (int keyval) +{ // TODO_GTK: arrow-handling should really be integrated in type-in proc, and this should be a backe-end OK handler + switch(keyval) { case GDK_Return: IcsKey(0); return TRUE; case GDK_Up: IcsKey(1); return TRUE; case GDK_Down: IcsKey(-1); return TRUE; @@ -613,10 +604,10 @@ AddHandler (Option *opt, DialogClass dlg, int nr) case 0: // history (now uses generic textview callback) case 1: // comment (likewise) break; - case 2: // move type-in - typeIn = opt; case 3: // input box - g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (ICSKeyEvent), (gpointer) opt); + icsBox = opt; + case 2: // move type-in + g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (TypeInProc), (gpointer) (dlg<<16 | (opt - dialogOptions[dlg]))); break; case 5: // game list g_signal_connect(opt->handle, "button-press-event", G_CALLBACK (GameListEvent), (gpointer) 0 ); @@ -1205,7 +1196,7 @@ printf("n=%d, h=%d, w=%d\n",n,height,width); w = option[i].type == Spin || option[i].type == Fractional ? 70 : option[i].max ? option[i].max : 205; if(option[i].type == FileName || option[i].type == PathName) w -= 55; - if (option[i].type==TextBox && option[i].value > 80){ + if (option[i].type==TextBox && option[i].value > 80){ textview = gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview), option[i].min & T_WRAP ? GTK_WRAP_WORD : GTK_WRAP_NONE); #ifdef TODO_GTK @@ -1219,6 +1210,7 @@ printf("n=%d, h=%d, w=%d\n",n,height,width); option[i].min & T_VSCRL ? GTK_POLICY_ALWAYS : GTK_POLICY_NEVER); gtk_container_add(GTK_CONTAINER(sw), textview); gtk_widget_set_size_request(GTK_WIDGET(sw), w, -1); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_OUT); textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); /* check if label is empty */ @@ -1389,6 +1381,7 @@ printf("n=%d, h=%d, w=%d\n",n,height,width); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(sw), list); gtk_widget_set_size_request(GTK_WIDGET(sw), option[i].max ? option[i].max : -1, option[i].value ? option[i].value : -1); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_OUT); if(option[i].textValue) // generic callback for double-clicking listbox item g_signal_connect(list, "button-press-event", G_CALLBACK(ListCallback), (gpointer) (dlgNr<<16 | i) ); @@ -1566,9 +1559,7 @@ SetInsertPos (Option *opt, int pos) void HardSetFocus (Option *opt) { -#ifdef TODO_GTK - XSetInputFocus(xDisplay, XtWindow(opt->handle), RevertToPointerRoot, CurrentTime); -#endif + FocusOnWidget(opt, 0); // second arg not used in GDK }