Fix problem with fake Control press on Alt-Gr

This commit is contained in:
Alexander Gottwald 2005-07-05 16:03:22 +00:00
parent d2ca9f4c92
commit 8c86c463a0
3 changed files with 16 additions and 7 deletions

View file

@ -1,3 +1,9 @@
2005-07-05 Alexander Gottwald <ago at freedesktop dot org>
* winmultiwindowwndproc.c:
* winkeybd.c:
Fix problem with fake Control press on Alt-Gr
2005-06-08 Alexander Gottwald <ago at freedesktop dot org>
* winlayouts.h:

View file

@ -448,7 +448,7 @@ winIsFakeCtrl_L (UINT message, WPARAM wParam, LPARAM lParam)
* Fake Ctrl_L presses will be followed by an Alt_R keypress
* with the same timestamp as the Ctrl_L press.
*/
if (message == WM_KEYDOWN
if ((message == WM_KEYDOWN || message == WM_SYSKEYDOWN)
&& wParam == VK_CONTROL
&& (HIWORD (lParam) & KF_EXTENDED) == 0)
{
@ -459,7 +459,7 @@ winIsFakeCtrl_L (UINT message, WPARAM wParam, LPARAM lParam)
/* Look for fake Ctrl_L preceeding an Alt_R press. */
fReturn = PeekMessage (&msgNext, NULL,
WM_KEYDOWN, WM_KEYDOWN,
WM_KEYDOWN, WM_SYSKEYDOWN,
PM_NOREMOVE);
/*
@ -473,9 +473,11 @@ winIsFakeCtrl_L (UINT message, WPARAM wParam, LPARAM lParam)
/* Look for fake Ctrl_L preceeding an Alt_R press. */
fReturn = PeekMessage (&msgNext, NULL,
WM_KEYDOWN, WM_KEYDOWN,
WM_KEYDOWN, WM_SYSKEYDOWN,
PM_NOREMOVE);
}
if (msgNext.message != WM_KEYDOWN && msgNext.message != WM_SYSKEYDOWN)
fReturn = 0;
/* Is next press an Alt_R with the same timestamp? */
if (fReturn && msgNext.wParam == VK_MENU
@ -524,6 +526,9 @@ winIsFakeCtrl_L (UINT message, WPARAM wParam, LPARAM lParam)
PM_NOREMOVE);
}
if (msgNext.message != WM_KEYUP && msgNext.message != WM_SYSKEYUP)
fReturn = 0;
/* Is next press an Alt_R with the same timestamp? */
if (fReturn
&& (msgNext.message == WM_KEYUP

View file

@ -734,8 +734,7 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
#endif
/* Pass the message to the root window */
SendMessage (hwndScreen, message, wParam, lParam);
return 0;
return winWindowProc(hwndScreen, message, wParam, lParam);
case WM_SYSKEYUP:
case WM_KEYUP:
@ -745,8 +744,7 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
#endif
/* Pass the message to the root window */
SendMessage (hwndScreen, message, wParam, lParam);
return 0;
return winWindowProc(hwndScreen, message, wParam, lParam);
case WM_HOTKEY:
#if CYGMULTIWINDOW_DEBUG