X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xhistory.c;h=0551ce1f5bf3c849de9dfaa182a3da75675afdfd;hb=4448222ea4dc2327eaf6338a19160842278229a9;hp=fb5639cee73804cc1411451b0c040b8871dd7810;hpb=70b0db4aa5acf071dd6a7adfd2b25e92511745db;p=xboard.git diff --git a/xhistory.c b/xhistory.c index fb5639c..0551ce1 100644 --- a/xhistory.c +++ b/xhistory.c @@ -49,41 +49,11 @@ extern Option historyOptions[]; // ------------- low-level front-end actions called by MoveHistory back-end ----------------- void -HighlightMove (int from, int to, Boolean highlight) -{ - static int init = 0; - GtkTextIter start, end; - - if(!init) { - init = 1; - gtk_text_buffer_create_tag(historyOptions[0].handle, "highlight", "background", "yellow", NULL); - gtk_text_buffer_create_tag(historyOptions[0].handle, "normal", "background", "white", NULL); - } - gtk_text_buffer_get_iter_at_offset(historyOptions[0].handle, &start, from); - gtk_text_buffer_get_iter_at_offset(historyOptions[0].handle, &end, to); - gtk_text_buffer_apply_tag_by_name(historyOptions[0].handle, highlight ? "highlight" : "normal", &start, &end); -} - -void ScrollToCurrent (int caretPos) { -#ifdef TODO_GTK - Arg args[10]; - char *s; - int len; - GetWidgetText(&historyOptions[0], &s); - len = strlen(s); - if(caretPos < 0 || caretPos > len) caretPos = len; - if(caretPos > len-30) { // scroll to end, which causes no flicker - static XEvent event; - XtCallActionProc(historyOptions[0].handle, "end-of-file", &event, NULL, 0); - return; - } - // the following leads to a very annoying flicker, even when no scrolling is done at all. - XtSetArg(args[0], XtNinsertPosition, caretPos); // this triggers scrolling in Xaw - XtSetArg(args[1], XtNdisplayCaret, False); - XtSetValues(historyOptions[0].handle, args, 2); -#endif + static GtkTextIter iter; + gtk_text_buffer_get_iter_at_offset((GtkTextBuffer *) historyOptions[0].handle, &iter, caretPos); + gtk_text_view_scroll_to_iter((GtkTextView *) historyOptions[0].textValue, &iter, 0.0, 0, 0.5, 0.5); }