X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=windows.c;h=ffd0f75894611260a7abdcf86e8c670334cb73a0;hb=db313b3948d27244dd7c34c2609c66d6204d8931;hp=6b0a7debe0b0916dafb15f736d2e5b82f984035c;hpb=b3f122f5f9ab5d12f2625ec59e2963c8d7c1ae9a;p=sgt-puzzles.git diff --git a/windows.c b/windows.c index 6b0a7de..ffd0f75 100644 --- a/windows.c +++ b/windows.c @@ -2993,18 +2993,18 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, cmd = wParam & ~0xF; /* low 4 bits reserved to Windows */ switch (cmd) { case IDM_NEW: - if (!midend_process_key(fe->me, 0, 0, 'n')) + if (!midend_process_key(fe->me, 0, 0, UI_NEWGAME)) PostQuitMessage(0); break; case IDM_RESTART: midend_restart_game(fe->me); break; case IDM_UNDO: - if (!midend_process_key(fe->me, 0, 0, 'u')) + if (!midend_process_key(fe->me, 0, 0, UI_UNDO)) PostQuitMessage(0); break; case IDM_REDO: - if (!midend_process_key(fe->me, 0, 0, '\x12')) + if (!midend_process_key(fe->me, 0, 0, UI_REDO)) PostQuitMessage(0); break; case IDM_COPY: @@ -3026,7 +3026,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, } break; case IDM_QUIT: - if (!midend_process_key(fe->me, 0, 0, 'q')) + if (!midend_process_key(fe->me, 0, 0, UI_QUIT)) PostQuitMessage(0); break; case IDM_CONFIG: @@ -3405,8 +3405,18 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, } break; case WM_CHAR: - if (!midend_process_key(fe->me, 0, 0, (unsigned char)wParam)) - PostQuitMessage(0); + { + int key = (unsigned char)wParam; + if (key == '\x1A') { + BYTE keystate[256]; + if (GetKeyboardState(keystate) && + (keystate[VK_SHIFT] & 0x80) && + (keystate[VK_CONTROL] & 0x80)) + key = UI_REDO; + } + if (!midend_process_key(fe->me, 0, 0, key)) + PostQuitMessage(0); + } return 0; case WM_TIMER: if (fe->timer) {