mirror of https://github.com/OpenTTD/OpenTTD
(svn r14363) -Fix [FS#2206]: some keypress combinations could be handled twice
parent
07418cbf7f
commit
fe5cc9c839
|
@ -464,8 +464,6 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case WM_CHAR: {
|
case WM_CHAR: {
|
||||||
/* Silently drop all non-text messages as those were handled by WM_KEYDOWN */
|
|
||||||
if (wParam < VK_SPACE) return 0;
|
|
||||||
uint scancode = GB(lParam, 16, 8);
|
uint scancode = GB(lParam, 16, 8);
|
||||||
uint charcode = wParam;
|
uint charcode = wParam;
|
||||||
|
|
||||||
|
@ -491,12 +489,13 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
|
||||||
case WM_KEYDOWN: {
|
case WM_KEYDOWN: {
|
||||||
keycode = MapWindowsKey(wParam);
|
keycode = MapWindowsKey(wParam);
|
||||||
|
|
||||||
/* Silently drop all text messages as those will be handled by WM_CHAR
|
/* Silently drop all messages handled by WM_CHAR. */
|
||||||
* WM_KEYDOWN only handles CTRL+ commands and special keys like VK_LEFT, etc. */
|
MSG msg;
|
||||||
if (keycode == 0 || (keycode > WKC_PAUSE && GB(keycode, 13, 4) == 0)) return 0;
|
if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
|
||||||
|
if (msg.message == WM_CHAR && GB(lParam, 16, 8) == GB(msg.lParam, 16, 8)) {
|
||||||
/* Keys handled in WM_CHAR */
|
return 0;
|
||||||
if ((uint)(GB(keycode, 0, 12) - WKC_NUM_DIV) <= WKC_MINUS - WKC_NUM_DIV) return 0;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
HandleKeypress(0 | (keycode << 16));
|
HandleKeypress(0 | (keycode << 16));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue