fix problem with empty string in -firstNeedsNoncompliantFEN
[xboard.git] / xhistory.c
index ed338bf..6f94e62 100644 (file)
@@ -1,6 +1,5 @@
 /*
  * xhistory.c -- Move list window, part of X front end for XBoard
- * $Id$
  *
  * Copyright 2000,2009 Free Software Foundation, Inc.
  * ------------------------------------------------------------------------
@@ -95,6 +94,7 @@ struct History{
 struct History *hist=0;
 String dots=" ... ";
 Position gameHistoryX, gameHistoryY;
+Dimension gameHistoryW;
 
 void
 HistoryPopDown(w, client_data, call_data)
@@ -104,12 +104,6 @@ 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++;
-    XtGetValues(hist->sh, args, j);
-
     XtPopdown(hist->sh);
     hist->Up=False;
   }
@@ -165,7 +159,6 @@ void HistoryAlloc(int len){
 }
 
 
-#if 1
 /* Find empty space inside vbox form widget and redistribute it amongst
    the list widgets inside it. */
 /* This version sort of works */
@@ -214,58 +207,6 @@ HistoryFill()
   XtSetArg(args[j], XtNwidth, w);  j++;
   XtSetValues(hist->mvb, args, j);
 }
-#else
-/* Find empty space inside vbox form widget and redistribute it amongst
-   the list widgets inside it. */
-/* This version doesn't work */
-void
-HistoryFill()
-{
-  Arg args[16];
-  Dimension fw, niw, wiw, biw, nbw, wbw, bbw;
-  int j, nl, wl, bl, fdd;
-  long extra;
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, &fw);  j++;
-  XtSetArg(args[j], XtNdefaultDistance, &fdd);  j++;
-  XtGetValues(hist->vbox, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &nl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &niw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &nbw);  j++;
-  XtGetValues(hist->mvn, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &wl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &wiw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &wbw);  j++;
-  XtGetValues(hist->mvw, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &bl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &biw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &bbw);  j++;
-  XtGetValues(hist->mvb, args, j);
-
-  extra = fw - 4*fdd -
-    nl - 1 - 2*niw - 2*nbw - wl - 2*wiw - 2*wbw - bl - 2*biw - 2*bbw;
-  if (extra < 0) extra = 0;
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, nl + 1 + 2*niw);  j++;
-  XtSetValues(hist->mvn, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, wl + 2*wiw + extra/2);  j++;
-  XtSetValues(hist->mvw, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, bl + 2*biw + extra/2);  j++;
-  XtSetValues(hist->mvb, args, j);
-}
-#endif
 
 void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){
   int i,b,m;
@@ -455,6 +396,18 @@ Widget HistoryCreate()
       strcpy(hist->black[i],"");
      }
 
+  // [HGM] restore old position
+  j = 0;
+  XtSetArg(args[j], XtNx, &gameHistoryX);  j++;
+  XtSetArg(args[j], XtNy, &gameHistoryY);  j++;
+  XtSetArg(args[j], XtNwidth, &gameHistoryW);  j++;
+  XtGetValues(shellWidget, args, j);
+  j = 0;
+  XtSetArg(args[j], XtNx, gameHistoryX + gameHistoryW);  j++;
+  XtSetArg(args[j], XtNy, gameHistoryY);  j++;
+  XtSetValues(hist->sh, args, j);
+    XtRealizeWidget(hist->sh);
+
     return hist->sh;
 }
 
@@ -468,12 +421,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"),