X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xhistory.c;h=e8dd0b42c6ea6edf6919431ae381931831a93058;hb=56310c5b198bc521e0a715377c68378b7bcf10a5;hp=919ea9a670fa1e743aa5edcf3400c49aa7416759;hpb=7f968f51c36d6e15fee97107ad7c5b85838c3f68;p=xboard.git diff --git a/xhistory.c b/xhistory.c index 919ea9a..e8dd0b4 100644 --- a/xhistory.c +++ b/xhistory.c @@ -63,7 +63,7 @@ void RefreshMemoContent P((void)); void MemoContentUpdated P((void)); void FindMoveByCharIndex P(( int char_index )); -void AppendText P((Option *opt, char *s)); +int AppendText P((Option *opt, char *s)); int GenericPopUp P((Option *option, char *title, int dlgNr)); void MarkMenu P((char *item, int dlgNr)); void GetWidgetText P((Option *opt, char **buf)); @@ -76,8 +76,8 @@ extern Boolean shellUp[10]; void HighlightMove( int from, int to, Boolean highlight ) { - if(!highlight) from = to = 0; - XawTextSetSelection( historyOptions[0].handle, from, to ); // for lack of a better method, use selection for highighting + if(highlight) + XawTextSetSelection( historyOptions[0].handle, from, to ); // for lack of a better method, use selection for highighting } void ClearHistoryMemo() @@ -90,20 +90,25 @@ void ClearHistoryMemo() int AppendToHistoryMemo( char * text, int bold, int colorNr ) { Arg args[10]; - char *s; - GetWidgetText(&historyOptions[0], &s); - AppendText(&historyOptions[0], text); // for now ignore bold & color stuff, as Xaw cannot handle that - return strlen(s); + return AppendText(&historyOptions[0], text); // for now ignore bold & color stuff, as Xaw cannot handle that } void ScrollToCurrent(int caretPos) { Arg args[10]; char *s; + int len; GetWidgetText(&historyOptions[0], &s); - if(caretPos < 0) caretPos = strlen(s); - XtSetArg(args[0], XtNdisplayCaret, False); - XtSetArg(args[1], XtNinsertPosition, caretPos); // this triggers scrolling in Xaw + 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); } @@ -171,5 +176,7 @@ HistorySet( char movelist[][2*MOVE_LEN], int first, int last, int current ) MoveHistorySet( movelist, first, last, current, pvInfoList ); EvalGraphSet( first, last, current, pvInfoList ); + + MakeEngineOutputTitle(); }