X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=backend.c;h=b1bbf1a9ec3c8b3d057ebbd49857bd00fce8668f;hb=c2280665bb5564f100498822158114c35a49d155;hp=6e24b1afb56c320d06071f59f2fac550409511ab;hpb=fae6216ac24b51714583d313f9213d90f9fd4fbc;p=xboard.git diff --git a/backend.c b/backend.c index 6e24b1a..b1bbf1a 100644 --- a/backend.c +++ b/backend.c @@ -7130,7 +7130,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) return; } doubleClick = FALSE; - if(gameMode == AnalyzeMode && pausing && first.excludeMoves) { // use pause state to exclude moves + if(gameMode == AnalyzeMode && (pausing || controlKey) && first.excludeMoves) { // use pause state to exclude moves doubleClick = TRUE; gatingPiece = boards[currentMove][y][x]; } fromX = x; fromY = y; toX = toY = -1; @@ -7614,6 +7614,9 @@ MatingPotential (int pCnt[], int side, int nMine, int nHis, int stale, int bisCo || majors + (12*pCnt[BlackFerz-side] | 6*pCnt[BlackAlfil-side]) > 16; // KCKAA, KCKAX, KCKEEX, KCKEXX (XX!=HH), KCKXXX // TO DO: cases wih an unpromoted f-Pawn acting as platform for an opponent Cannon + } else if(v == VariantKnightmate) { + if(nMine == 1) return FALSE; + if(nMine == 2 && nHis == 1 && pCnt[WhiteBishop+side] + pCnt[WhiteFerz+side] + pCnt[WhiteKnight+side]) return FALSE; // KBK is only draw } else if(pCnt[WhiteKing] == 1 && pCnt[BlackKing] == 1) { // other variants with orthodox Kings int nBishops = pCnt[WhiteBishop+side] + pCnt[WhiteFerz+side];