DrawMenuBar(hwndMain);\r
}\r
\r
-static int fromX = -1, fromY = -1, toX, toY; // [HGM] moved upstream, so JAWS can use them\r
+/*static*/ int fromX = -1, fromY = -1, toX, toY; // [HGM] moved upstream, so JAWS can use them\r
\r
/* JAWS preparation patch (WinBoard for the sight impaired). Define required insertions as empty */\r
#ifdef JAWS\r
{ "secondNeedsNoncompliantFEN", ArgString, (LPVOID) &appData.fenOverride2, FALSE },\r
{ "keepAlive", ArgInt, (LPVOID) &appData.keepAlive, FALSE },\r
{ "icstype", ArgInt, (LPVOID) &ics_type, FALSE },\r
+ { "forceIllegalMoves", ArgTrue, (LPVOID) &appData.forceIllegal, FALSE },\r
\r
#ifdef ZIPPY\r
{ "zippyTalk", ArgBoolean, (LPVOID) &appData.zippyTalk, FALSE },\r
toY = y;\r
/* [HGM] <popupFix> UserMoveEvent requires two calls now,\r
to make sure move is legal before showing promotion popup */\r
- moveType = UserMoveTest(fromX, fromY, toX, toY, NULLCHAR);\r
+ moveType = UserMoveTest(fromX, fromY, toX, toY, NULLCHAR, FALSE);\r
if(moveType == AmbiguousMove) { /* [HGM] Edit-Position move executed */\r
fromX = fromY = -1; \r
ClearHighlights();\r
DrawPosition(FALSE, boards[currentMove]);\r
break; \r
} else \r
- if(moveType != ImpossibleMove) {\r
- if(moveType == IllegalMove) {\r
- ;\r
- } else\r
+ if(moveType != ImpossibleMove && moveType != Comment) {\r
/* [HGM] We use PromotionToKnight in Shogi to indicate frorced promotion */\r
if (moveType == WhitePromotionKnight || moveType == BlackPromotionKnight ||\r
((moveType == WhitePromotionQueen || moveType == BlackPromotionQueen) &&\r
DrawPosition(FALSE, boards[currentMove]);\r
boards[currentMove][fromY][fromX] = p; // take back, but display stays\r
boards[currentMove][toY][toX] = q;\r
+ DisplayMessage("Select piece from holdings", "");\r
} else\r
PromotionPopup(hwnd);\r
- } else { /* not a promotion */\r
+ goto noClear;\r
+ } else { // not a promotion. Move can be illegal if testLegality off, and should be made then.\r
if (appData.animate || appData.highlightLastMove) {\r
SetHighlights(fromX, fromY, toX, toY);\r
} else {\r
}\r
}\r
fromX = fromY = -1;\r
+ noClear:\r
break;\r
}\r
- if (gotPremove) {\r
+ if (gotPremove && moveType != Comment) {\r
SetPremoveHighlights(fromX, fromY, toX, toY);\r
- DrawPosition(forceFullRepaint || FALSE, NULL);\r
+// DrawPosition(forceFullRepaint || FALSE, NULL);\r
} else ClearHighlights();\r
fromX = fromY = -1;\r
DrawPosition(forceFullRepaint || FALSE, NULL);\r
+ if(moveType != Comment) break;\r
}\r
/* First downclick, or restart on a square with same color piece */\r
if (!frozen && OKToStartUserMove(x, y)) {\r
toY = y;\r
saveAnimate = appData.animate; /* sorry, Hawk :) */\r
appData.animate = appData.animate && !appData.animateDragging;\r
- moveType = UserMoveTest(fromX, fromY, toX, toY, NULLCHAR);\r
+ moveType = UserMoveTest(fromX, fromY, toX, toY, NULLCHAR, TRUE);\r
if(moveType == AmbiguousMove) { /* [HGM] Edit-Position move executed */\r
fromX = fromY = -1; \r
ClearHighlights();\r
boards[currentMove][fromY][fromX] = p; // take back, but display stays\r
boards[currentMove][toY][toX] = q;\r
appData.animate = saveAnimate;\r
+ DisplayMessage("Select piece from holdings", "");\r
break;\r
} else\r
PromotionPopup(hwnd); /* [HGM] Popup now calls FinishMove */\r
MINMAXINFO *mmi;\r
\r
switch (message) {\r
+ case WM_NOTIFY:\r
+ if (((NMHDR*)lParam)->code == EN_LINK)\r
+ {\r
+ ENLINK *pLink = (ENLINK*)lParam;\r
+ if (pLink->msg == WM_LBUTTONUP)\r
+ {\r
+ TEXTRANGE tr;\r
+\r
+ tr.chrg = pLink->chrg;\r
+ tr.lpstrText = malloc(1+tr.chrg.cpMax-tr.chrg.cpMin);\r
+ hText = GetDlgItem(hDlg, OPT_ConsoleText);\r
+ SendMessage(hText, EM_GETTEXTRANGE, 0, (LPARAM)&tr);\r
+ ShellExecute(NULL, "open", tr.lpstrText, NULL, NULL, SW_SHOW);\r
+ free(tr.lpstrText);\r
+ }\r
+ }\r
+ break;\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
hwndConsole = hDlg;\r
hText = GetDlgItem(hDlg, OPT_ConsoleText);\r
VOID\r
ConsoleCreate()\r
{\r
- HWND hCons;\r
+ HWND hCons, hText;\r
+ WORD wMask;\r
if (hwndConsole) return;\r
hCons = CreateDialog(hInst, szConsoleName, 0, NULL);\r
SendMessage(hCons, WM_INITDIALOG, 0, 0);\r
+\r
+\r
+ // make the text item in the console do URL links\r
+ hText = GetDlgItem(hCons, OPT_ConsoleText);\r
+ wMask = SendMessage(hText, EM_GETEVENTMASK, 0, 0L);\r
+ SendMessage(hText, EM_SETEVENTMASK, 0, wMask | ENM_LINK);\r
+ SendMessage(hText, EM_AUTOURLDETECT, TRUE, 0L);\r
}\r
\r
\r
{\r
HWND hwnd = GetActiveWindow();\r
EitherCommentPopUp(0, title, str, FALSE);\r
+ SAY(str);\r
SetActiveWindow(hwnd);\r
}\r
\r