}\r
\r
VOID\r
+DelayedSpeak()\r
+{\r
+#ifdef NVDA\r
+ nvdaController_cancelSpeech();\r
+#endif\r
+ SayString("", TRUE);\r
+}\r
+\r
+VOID\r
SayPieceType(char id)\r
{\r
int f, r, nr = 0;\r
ChessSquare piece = CharToPiece(id);\r
if(piece == EmptySquare) {\r
SayString("That is not a valid piece", FALSE);\r
- return;\r
- }\r
- for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) {\r
+ } else {\r
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) {\r
if(boards[currentMove][r][f] != piece) continue;\r
if(!nr++) SayString(PieceToName(piece, 1), FALSE), SayString("on", FALSE);\r
else SayString("and", FALSE);\r
SayString(SquareToChar(f), FALSE);\r
SayString(SquareToNum(r), FALSE);\r
- }\r
- if(!nr) SayString("There is no", FALSE), SayString(PieceToName(piece, 1), FALSE), SayString("on the board", FALSE);\r
+ }\r
+ if(!nr) SayString("There is no", FALSE), SayString(PieceToName(piece, 1), FALSE), SayString("on the board", FALSE);\r
+ }\r
+ ScheduleDelayedEvent(DelayedSpeak, 50); // immediate flush is interrupted by reading title bar parent window\r
+// SayString("", TRUE); // flush\r
}\r
\r
VOID\r