X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xhistory.c;h=0551ce1f5bf3c849de9dfaa182a3da75675afdfd;hb=4448222ea4dc2327eaf6338a19160842278229a9;hp=4277f82fea9db2d49a403b40aba0bbcaf810d946;hpb=e46da46036e2db1411712cdadecd471a7acb8d3d;p=xboard.git diff --git a/xhistory.c b/xhistory.c index 4277f82..0551ce1 100644 --- a/xhistory.c +++ b/xhistory.c @@ -24,32 +24,11 @@ #include #include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include "common.h" -#include "frontend.h" #include "backend.h" #include "xhistory.h" -#include "xboard.h" #include "dialogs.h" #include "gettext.h" @@ -62,108 +41,25 @@ #endif // templates for calls into back-end (= history.c; should be moved to history.h header shared with it!) -void RefreshMemoContent P((void)); -void MemoContentUpdated P((void)); void FindMoveByCharIndex P(( int char_index )); -// variables in xoptions.c +// variables in nhistory.c extern Option historyOptions[]; // ------------- low-level front-end actions called by MoveHistory back-end ----------------- void -HighlightMove (int from, int to, Boolean highlight) -{ - if(highlight) - XawTextSetSelection( historyOptions[0].handle, from, to ); // for lack of a better method, use selection for highighting -} - -void -ClearHistoryMemo () -{ - SetWidgetText(&historyOptions[0], "", HistoryDlg); -} - -// the bold argument says 0 = normal, 1 = bold typeface -// the colorNr argument says 0 = font-default, 1 = gray -int -AppendToHistoryMemo (char * text, int bold, int colorNr) -{ - 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); - 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); + 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); } // ------------------------------ callbacks -------------------------- -char *historyText; char historyTranslations[] = ": select-start() \n \ : extend-end() SelectMove() \n"; -void -SelectMove (Widget w, XEvent * event, String * params, Cardinal * nParams) -{ - XawTextPosition index, dummy; - - XawTextGetSelectionPos(w, &index, &dummy); - FindMoveByCharIndex( index ); // [HGM] also does the actual moving to it, now -} - -Option historyOptions[] = { -{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 400, NULL, (void*) &historyText, "", NULL, TextBox, "" }, -{ 0, NO_OK, 0, NULL, (void*) NULL, "", NULL, EndMark , "" } -}; - -// ------------ standard entry points into MoveHistory code ----------- - -Boolean -MoveHistoryIsUp () -{ - return shellUp[HistoryDlg]; -} - -Boolean -MoveHistoryDialogExists () -{ - return DialogExists(HistoryDlg); -} - -void -HistoryPopUp () -{ - if(GenericPopUp(historyOptions, _("Move list"), HistoryDlg, BoardWindow, NONMODAL, 1)) - AddHandler(&historyOptions[0], 0); - MarkMenu("View.MoveHistory", HistoryDlg); -} - -void -HistoryShowProc () -{ - if (!shellUp[HistoryDlg]) { - ASSIGN(historyText, ""); - HistoryPopUp(); - RefreshMemoContent(); - MemoContentUpdated(); - } else PopDown(HistoryDlg); - ToNrEvent(currentMove); -}