- Move Alt-Escape, Space and Tab to ConWndProc, disable GuiProcessKeyCallback.
- Alt-Space was not getting launched out of GuiProcessKeyCallback. The key needed translated.
- Reduce code for system menus.

svn path=/trunk/; revision=63319
This commit is contained in:
James Tabor 2014-05-17 02:15:50 +00:00
parent fdc93df98f
commit ef2221fd12
2 changed files with 10 additions and 6 deletions

View file

@ -255,7 +255,7 @@ CreateSysMenu(HWND hWnd)
{ {
MENUITEMINFOW mii; MENUITEMINFOW mii;
WCHAR szMenuStringBack[255]; WCHAR szMenuStringBack[255];
const WCHAR *ptrTab; WCHAR *ptrTab;
HMENU hMenu = GetSystemMenu(hWnd, FALSE); HMENU hMenu = GetSystemMenu(hWnd, FALSE);
if (hMenu != NULL) if (hMenu != NULL)
{ {
@ -269,9 +269,7 @@ CreateSysMenu(HWND hWnd)
ptrTab = wcschr(szMenuStringBack, '\t'); ptrTab = wcschr(szMenuStringBack, '\t');
if (ptrTab) if (ptrTab)
{ {
mii.cch = (int)( ptrTab - szMenuStringBack); *ptrTab = '\0';
RtlZeroMemory((PVOID)ptrTab, mii.cch);
mii.cch = wcslen(szMenuStringBack); mii.cch = wcslen(szMenuStringBack);
SetMenuItemInfoW(hMenu, SC_CLOSE, FALSE, &mii); SetMenuItemInfoW(hMenu, SC_CLOSE, FALSE, &mii);
@ -1927,6 +1925,11 @@ ConWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
break; break;
} }
/* Detect Alt-Esc/Space/Tab presses defer to DefWindowProc */
if ( (HIWORD(lParam) & KF_ALTDOWN) && (wParam == VK_ESCAPE || wParam == VK_SPACE || wParam == VK_TAB))
{
return DefWindowProcW(hWnd, msg, wParam, lParam);
}
OnKey(GuiData, msg, wParam, lParam); OnKey(GuiData, msg, wParam, lParam);
break; break;

View file

@ -806,8 +806,9 @@ GuiProcessKeyCallback(IN OUT PFRONTEND This,
if ((ShiftState & (RIGHT_ALT_PRESSED | LEFT_ALT_PRESSED) || KeyStateMenu & 0x80) && if ((ShiftState & (RIGHT_ALT_PRESSED | LEFT_ALT_PRESSED) || KeyStateMenu & 0x80) &&
(VirtualKeyCode == VK_ESCAPE || VirtualKeyCode == VK_TAB || VirtualKeyCode == VK_SPACE)) (VirtualKeyCode == VK_ESCAPE || VirtualKeyCode == VK_TAB || VirtualKeyCode == VK_SPACE))
{ {
DefWindowProcW(msg->hwnd, msg->message, msg->wParam, msg->lParam); DPRINT1("GuiProcessKeyCallback\n");
return TRUE; //DefWindowProcW(msg->hwnd, msg->message, msg->wParam, msg->lParam);
//return TRUE;
} }
return FALSE; return FALSE;