char white_holding[64], black_holding[64];
TimeMark lastNodeCountTime;
long lastNodeCount=0;
-int shiftKey; // [HGM] set by mouse handler
+int shiftKey, controlKey; // [HGM] set by mouse handler
int have_sent_ICS_logon = 0;
int movesPerSession;
if(boards[0][fromY][BOARD_WIDTH-2] == 0) boards[0][fromY][BOARD_WIDTH-1] = EmptySquare;
}
} else
- boards[0][fromY][fromX] = EmptySquare;
+ boards[0][fromY][fromX] = gatingPiece;
DrawPosition(FALSE, boards[currentMove]);
return;
}
if (OKToStartUserMove(fromX, fromY)) {
second = 0;
MarkTargetSquares(0);
+ if(gameMode == EditPosition && controlKey) gatingPiece = boards[currentMove][fromY][fromX];
DragPieceBegin(xPix, yPix, FALSE); dragging = 1;
if(appData.sweepSelect && CanPromote(piece = boards[currentMove][fromY][fromX], fromY)) {
promoSweep = defaultPromoChoice;
if(but3) MovePV(x, y, lineGap + BOARD_HEIGHT * (squareSize + lineGap));
return NULL;
}
- shiftKey = (ShiftKeys() & 3) != 0;
+ shiftKey = ShiftKeys();
+ controlKey = (shiftKey & 0xC) != 0;
+ shiftKey = (shiftKey & 3) != 0;
switch(n) {
case 1: LeftClick(Press, x, y), but1 = 1; break;
case -1: LeftClick(Release, x, y), but1 = 0; break;
char *buf, int count, int error));
extern ProcRef cmailPR;
-extern int shiftKey;
+extern int shiftKey, controlKey;
/* in xgamelist.c or winboard.c */
void GLT_ClearList();