cleanup: got rid of a lot of files that are not needed for a new release
[xboard.git] / xboard.c
index 94c59d1..ed688da 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -346,6 +346,9 @@ void DrawProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 void AbortProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 void AdjournProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 void ResignProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
+void AdjuWhiteProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
+void AdjuBlackProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
+void AdjuDrawProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 void EnterKeyProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 void StopObservingProc P((Widget w, XEvent *event, String *prms,
                          Cardinal *nprms));
@@ -601,6 +604,10 @@ MenuItem actionMenu[] = {
     {"----", NothingProc},
     {N_("Stop Observing"), StopObservingProc},
     {N_("Stop Examining"), StopExaminingProc},
+    {"----", NothingProc},
+    {N_("Adjudicate to White"), AdjuWhiteProc},
+    {N_("Adjudicate to Black"), AdjuBlackProc},
+    {N_("Adjudicate Draw"), AdjuDrawProc},
     {NULL, NULL}
 };
 
@@ -1781,6 +1788,9 @@ XtActionsRec boardActions[] = {
     { "AdjournProc", AdjournProc },
     { "AbortProc", AbortProc },
     { "ResignProc", ResignProc },
+    { "AdjuWhiteProc", AdjuWhiteProc },
+    { "AdjuBlackProc", AdjuBlackProc },
+    { "AdjuDrawProc", AdjuDrawProc },
     { "EnterKeyProc", EnterKeyProc },
     { "StopObservingProc", StopObservingProc },
     { "StopExaminingProc", StopExaminingProc },
@@ -6648,6 +6658,33 @@ void ResignProc(w, event, prms, nprms)
     ResignEvent();
 }
 
+void AdjuWhiteProc(w, event, prms, nprms)
+     Widget w;
+     XEvent *event;
+     String *prms;
+     Cardinal *nprms;
+{
+    UserAdjudicationEvent(+1);
+}
+
+void AdjuBlackProc(w, event, prms, nprms)
+     Widget w;
+     XEvent *event;
+     String *prms;
+     Cardinal *nprms;
+{
+    UserAdjudicationEvent(-1);
+}
+
+void AdjuDrawProc(w, event, prms, nprms)
+     Widget w;
+     XEvent *event;
+     String *prms;
+     Cardinal *nprms;
+{
+    UserAdjudicationEvent(0);
+}
+
 void EnterKeyProc(w, event, prms, nprms)
      Widget w;
      XEvent *event;
@@ -9143,6 +9180,11 @@ DragPieceBegin(x, y)
        /* Mark this square as needing to be redrawn. Note that
           we don't remove the piece though, since logically (ie
           as seen by opponent) the move hasn't been made yet. */
+           if(boardX == BOARD_RGHT+1 && PieceForSquare(boardX-1, boardY) > 1 ||
+              boardX == BOARD_LEFT-2 && PieceForSquare(boardX+1, boardY) > 1)
+           XCopyArea(xDisplay, xBoardWindow, player.saveBuf, player.blitGC,
+                    corner.x, corner.y, squareSize, squareSize,
+                    0, 0); // [HGM] xh: unstack in stead of grab
        damage[boardY][boardX] = True;
     } else {
        player.dragActive = False;