X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxoptions.c;h=45ff953fd74f7123c05c6583e9c6842bbe55d2c3;hb=9d51fbcf5ae0885f2e4855cc8805f3684dd8e0d9;hp=2806fb01b576effa4325a324a1aa300bd5f495bc;hpb=5d0f6311ab9e40e026d6ba26fa15e4ba6a5aead3;p=xboard.git diff --git a/gtk/xoptions.c b/gtk/xoptions.c index 2806fb0..45ff953 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -503,6 +503,8 @@ TypeInProc (GtkWidget *widget, GdkEventKey *event, gpointer gdata) shiftState = event->state & GDK_SHIFT_MASK; 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; @@ -556,7 +558,7 @@ AppendColorized (Option *opt, char *s, int count) static GtkTextTag *fgTags[8], *bgTags[8], *font, *bold, *normal, *attr = NULL; if(!font) { - font = gtk_text_buffer_create_tag(opt->handle, NULL, "font", "Monospace normal", NULL); + font = gtk_text_buffer_create_tag(opt->handle, NULL, "font", appData.icsFont, NULL); gtk_widget_modify_base(GTK_WIDGET(opt->textValue), GTK_STATE_NORMAL, &backgroundColor); } @@ -659,15 +661,23 @@ MemoEvent(GtkWidget *widget, GdkEvent *event, gpointer gdata) ((ButtonCallback*) memo->target)(button == 1 ? memo->value : -memo->value); return TRUE; } + if(memo->value == 250 // kludge to recognize ICS Console and Chat panes + && gtk_text_buffer_get_selection_bounds(memo->handle, NULL, NULL) ) { +printf("*** selected\n"); + gtk_text_buffer_get_selection_bounds(memo->handle, &start, &end); // only return selected text + index = -1; // kludge to indicate omething was selected + } else { // GTK_TODO: is this really the most efficient way to get the character at the mouse cursor??? - gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(widget), GTK_TEXT_WINDOW_WIDGET, w, h, &x, &y); - gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(widget), &start, x, y); - gtk_text_buffer_place_cursor(memo->handle, &start); - /* get cursor position into index */ - g_object_get(memo->handle, "cursor-position", &index, NULL); + gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(widget), GTK_TEXT_WINDOW_WIDGET, w, h, &x, &y); + gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(widget), &start, x, y); + gtk_text_buffer_place_cursor(memo->handle, &start); + /* get cursor position into index */ + g_object_get(memo->handle, "cursor-position", &index, NULL); + /* take complete contents */ + gtk_text_buffer_get_start_iter (memo->handle, &start); + gtk_text_buffer_get_end_iter (memo->handle, &end); + } /* get text from textbuffer */ - gtk_text_buffer_get_start_iter (memo->handle, &start); - gtk_text_buffer_get_end_iter (memo->handle, &end); val = gtk_text_buffer_get_text (memo->handle, &start, &end, FALSE); break; default: @@ -860,6 +870,7 @@ GraphEventProc(GtkWidget *widget, GdkEvent *event, gpointer gdata) GdkEventExpose *eevent = (GdkEventExpose *) event; GdkEventButton *bevent = (GdkEventButton *) event; GdkEventMotion *mevent = (GdkEventMotion *) event; + GdkEventScroll *sevent = (GdkEventScroll *) event; GtkAllocation a; cairo_t *cr; @@ -916,6 +927,10 @@ GraphEventProc(GtkWidget *widget, GdkEvent *event, gpointer gdata) cairo_destroy(cr); default: return; + case GDK_SCROLL: + if(sevent->direction == GDK_SCROLL_UP) button = 4; + if(sevent->direction == GDK_SCROLL_DOWN) button = 5; + break; case GDK_MOTION_NOTIFY: f = 0; w = mevent->x; h = mevent->y; @@ -1334,6 +1349,11 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); /* no label so let textview occupy all columns */ Pack(hbox, table, sw, left, left+r, top, GTK_EXPAND); } + if ( option[i].textValue != NULL ) { + PangoFontDescription *pfd; + pfd = pango_font_description_from_string(*(char**)option[i].textValue); + gtk_widget_modify_font(textview, pfd); + } if ( *(char**)option[i].target != NULL ) gtk_text_buffer_set_text (textbuffer, *(char**)option[i].target, -1); else @@ -1517,6 +1537,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); g_signal_connect (graph, "button-press-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]); g_signal_connect (graph, "button-release-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]); g_signal_connect (graph, "motion-notify-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]); + g_signal_connect (graph, "scroll-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]); if(option[i].min & FIX_H) { // logo GtkWidget *frame = gtk_aspect_frame_new(NULL, 0.5, 0.5, option[i].max/(float)option[i].value, FALSE); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); @@ -1539,6 +1560,9 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); case DropDown: top--; msg = _(option[i].name); // write name on the menu button +#ifndef __APPLE__ + if(tinyLayout) { strcpy(def, msg); def[tinyLayout] = NULLCHAR; msg = def; } // clip menu text to keep menu bar small +#endif // XtSetArg(args[j], XtNmenuName, XtNewString(option[i].name)); j++; // XtSetArg(args[j], XtNlabel, msg); j++; option[i].handle = (void*)