X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xhistory.c;h=dca93196aa57e829db890ca41c853259ccc6b1c3;hb=39fd546eed3b517c4da83bc48d019a121d645cfc;hp=c2ac39290d2a540fc31ad3b34a09541d0ce4ff33;hpb=a5acdedf686f954492492595b327089f15de76a0;p=xboard.git diff --git a/xhistory.c b/xhistory.c index c2ac392..dca9319 100644 --- a/xhistory.c +++ b/xhistory.c @@ -78,7 +78,7 @@ extern char *getenv(); #define _LL_ 100 -extern Widget formWidget, shellWidget, boardWidget, menuBarWidget; +extern Widget formWidget, shellWidget, boardWidget, menuBarWidget, historyShell; extern Display *xDisplay; extern int squareSize; extern Pixmap xMarkPixmap; @@ -94,6 +94,7 @@ struct History{ struct History *hist=0; String dots=" ... "; Position gameHistoryX, gameHistoryY; +Dimension gameHistoryW, gameHistoryH; void HistoryPopDown(w, client_data, call_data) @@ -103,11 +104,18 @@ HistoryPopDown(w, client_data, call_data) Arg args[16]; int j; if(hist) { + // [HGM] remember old position j = 0; XtSetArg(args[j], XtNx, &gameHistoryX); j++; XtSetArg(args[j], XtNy, &gameHistoryY); j++; + XtSetArg(args[j], XtNwidth, &gameHistoryW); j++; + XtSetArg(args[j], XtNheight, &gameHistoryH); j++; XtGetValues(hist->sh, args, j); + wpMoveHistory.x = gameHistoryX - 4; + wpMoveHistory.y = gameHistoryY - 23; + wpMoveHistory.width = gameHistoryW; + wpMoveHistory.height = gameHistoryH; XtPopdown(hist->sh); hist->Up=False; @@ -267,6 +275,7 @@ void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){ else XawListUnhighlight(hist->mvb); } } + EvalGraphSet( first, last, current, pvInfoList ); // piggy-backed } Widget HistoryCreate() @@ -288,11 +297,11 @@ Widget HistoryCreate() XtSetArg(args[j], XtNresizable, True); j++; XtSetArg(args[j], XtNallowShellResize, True); j++; #if TOPLEVEL - hist->sh = + hist->sh = historyShell = XtCreatePopupShell(_("Move list"), topLevelShellWidgetClass, shellWidget, args, j); #else - hist->sh = + hist->sh = historyShell = XtCreatePopupShell(_("Move list"), transientShellWidgetClass, shellWidget, args, j); #endif @@ -309,10 +318,8 @@ Widget HistoryCreate() form = XtCreateManagedWidget("form", formWidgetClass, layout, args, j); - j=0; j = 0; - XtSetArg(args[j], XtNtop, XtChainTop); j++; XtSetArg(args[j], XtNbottom, XtChainBottom); j++; XtSetArg(args[j], XtNleft, XtChainLeft); j++; @@ -401,6 +408,24 @@ Widget HistoryCreate() strcpy(hist->black[i],""); } + if(wpMoveHistory.width > 0) { + gameHistoryW = wpMoveHistory.width; + gameHistoryH = wpMoveHistory.height; + gameHistoryX = wpMoveHistory.x; + gameHistoryY = wpMoveHistory.y; + } + + // [HGM] restore old position + if(gameHistoryW > 0) { + j = 0; + XtSetArg(args[j], XtNx, gameHistoryX); j++; + XtSetArg(args[j], XtNy, gameHistoryY); j++; + XtSetArg(args[j], XtNwidth, gameHistoryW); j++; + XtSetArg(args[j], XtNheight, gameHistoryH); j++; + XtSetValues(hist->sh, args, j); + } + XtRealizeWidget(hist->sh); + return hist->sh; } @@ -414,12 +439,6 @@ HistoryPopUp() XtPopup(hist->sh, XtGrabNone); - // [HGM] restore old position - j = 0; - XtSetArg(args[j], XtNx, gameHistoryX); j++; - XtSetArg(args[j], XtNy, gameHistoryY); j++; - XtSetValues(hist->sh, args, j); - j=0; XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++; XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move History"), @@ -446,3 +465,8 @@ HistoryShowProc(w, event, prms, nprms) ToNrEvent(currentMove); } +Boolean +MoveHistoryIsUp() +{ + return hist && hist->Up; +}