Fix JAWS piece drop cursor, and streamline some sentences
authorH.G. Muller <h.g.muller@hccnet.nl>
Thu, 1 Apr 2010 13:22:41 +0000 (15:22 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Thu, 6 May 2010 14:23:51 +0000 (16:23 +0200)
The cursor square was reset to a1 after every use of the piece menu,
which was very inconvenient. Some of the spoken sentences have been
improved; the square is read before the piece now, when using the arrow
keys on the board.

winboard/jaws.c
winboard/winboard.c

index 540bf7b..56c7411 100644 (file)
@@ -282,6 +282,7 @@ InitJAWS()
 \r
 int beeps[] = { 1, 0, 0, 0, 0 };\r
 int beepCodes[] = { 0, MB_OK, MB_ICONERROR, MB_ICONQUESTION, MB_ICONEXCLAMATION, MB_ICONASTERISK };\r
+static int dropX = -1, dropY = -1;\r
 \r
 VOID\r
 KeyboardEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)\r
@@ -290,6 +291,10 @@ KeyboardEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
        char *piece, *xchar, *ynum ;\r
        int n, beepType = 1; // empty beep\r
 \r
+       if(fromX == -1 || fromY == -1) { // if we just dropped piece, stay at that square\r
+               fromX = dropX; fromY = dropY;\r
+               dropX = dropY = -1; // but only once\r
+        }\r
        if(fromX == -1 || fromY == -1) {\r
                fromX = BOARD_LEFT; fromY = 0;\r
         }\r
@@ -345,7 +350,7 @@ KeyboardEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                ynum = SquareToNum(fromY);\r
                if(currentPiece != EmptySquare) {\r
 //                     SayString(piece[0] == 'W' ? "white" : "black", TRUE);\r
-                       sprintf(buf, "%s %s %s", piece, xchar, ynum);\r
+                       sprintf(buf, "%s %s %s", xchar, ynum, piece);\r
                } else sprintf(buf, "%s %s", xchar, ynum);\r
                SayString(buf, TRUE);\r
        }\r
@@ -1071,11 +1076,11 @@ SayClockTime()
                suppressClocks = 0; // back on after two requests in rapid succession\r
        sprintf(buf1, "%s", TimeString(whiteTimeRemaining));\r
        str1 = buf1;\r
-       SayString("White's remaining time is", FALSE);\r
+       SayString("White clock", FALSE);\r
        SayString(str1, FALSE);\r
        sprintf(buf2, "%s", TimeString(blackTimeRemaining));\r
        str2 = buf2;\r
-       SayString("Black's remaining time is", FALSE);\r
+       SayString("Black clock", FALSE);\r
        SayString(str2, FALSE);\r
        lastWhiteTime = whiteTimeRemaining;\r
        lastBlackTime = blackTimeRemaining;\r
@@ -1194,6 +1199,7 @@ NiceTime(int x)
            if ((char)wParam == 022 && gameMode == EditPosition) { /* <Ctl R>. Pop up piece menu */\\r
                POINT pt; int x, y;\\r
                SquareToPos(fromY, fromX, &x, &y);\\r
+               dropX = fromX; dropY = fromY;\\r
                pt.x = x; pt.y = y;\\r
                if(gameInfo.variant != VariantShogi)\\r
                    MenuPopup(hwnd, pt, LoadMenu(hInst, "PieceMenu"), -1);\\r
index 87eb9eb..0ac478c 100644 (file)
@@ -4548,7 +4548,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
          TagsPopUp(tags, CmailMsg());\r
          free(tags);\r
       }\r
-      SAY("programs start playing each other");\r
+      SAY("computer starts playing both sides");\r
       break;\r
 \r
     case IDM_AnalysisMode:\r
@@ -4611,7 +4611,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 \r
     case IDM_EditPosition:\r
       EditPositionEvent();\r
-      SAY("to set up a position type a FEN");\r
+      SAY("enter a FEN string or setup a position on the board using the control R pop up menu");\r
       break;\r
 \r
     case IDM_Training:\r