changes from H.G. Muller; version 4.3.15
[xboard.git] / xhistory.c
index 7f02ab8..5640fee 100644 (file)
@@ -90,7 +90,7 @@ struct History{
 
 struct History *hist=0;
 String dots=" ... ";
-
+Position gameHistoryX, gameHistoryY;
 void
 HistoryPopDown(w, client_data, call_data)
      Widget w;
@@ -98,20 +98,26 @@ HistoryPopDown(w, client_data, call_data)
 {
   Arg args[16];
   int j;
-  if(hist)
-
-  XtPopdown(hist->sh);
-  hist->Up=False;
+  if(hist) {
+    // [HGM] remember old position
+    j = 0;
+    XtSetArg(args[j], XtNx, &gameHistoryX);  j++;\r
+    XtSetArg(args[j], XtNy, &gameHistoryY);  j++;\r
+    XtGetValues(hist->sh, args, j);\r
 
+    XtPopdown(hist->sh);
+    hist->Up=False;
+  }
   j=0;
   XtSetArg(args[j], XtNleftBitmap, None); j++;
-  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move List"),
+  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move History"),
                args, j);
 }
 
 void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data)
 {
     int to;
+
     XawListReturnStruct *R = (XawListReturnStruct *) call_data;
     if (w == hist->mvn || w == hist->mvw) {
       to=2*R->list_index-1;
@@ -445,6 +451,12 @@ Widget HistoryCreate()
       strcpy(hist->black[i],"");
      }
    
+  // [HGM] remember old position
+  j = 0;
+  XtSetArg(args[j], XtNx, &gameHistoryX);  j++;\r
+  XtSetArg(args[j], XtNy, &gameHistoryY);  j++;\r
+  XtGetValues(hist->sh, args, j);\r
+
     return hist->sh;
 }
 
@@ -456,9 +468,16 @@ HistoryPopUp()
 
   if(!hist) HistoryCreate();
   XtPopup(hist->sh, XtGrabNone);
+
+  // [HGM] restore old position
+  j = 0;
+  XtSetArg(args[j], XtNx, gameHistoryX);  j++;\r
+  XtSetArg(args[j], XtNy, gameHistoryY);  j++;\r
+  XtSetValues(hist->sh, args, j);\r
+
   j=0;
   XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;
-  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move List"),
+  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move History"),
                args, j);
   hist->Up=True;
 }