mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 12:23:31 +00:00
[KBSWITCH]
- Don't fall through to the default label. CID 515166 [NTUSER] - Fix a copypasta. [USER32] - Fix computing of HKL for layouts with Layout id. - Don't call NtUserLoadKeyboardLayoutEx with bogus keyboard layout id. - Ideally LoadKeyboardLayout should return the default system layout on failure - to be continued. svn path=/trunk/; revision=73708
This commit is contained in:
@@ -492,6 +492,8 @@ WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
if (!ShellExecuteEx(&shInputDll))
|
||||
MessageBox(hwnd, _T("Can't start input.dll"), NULL, MB_OK | MB_ICONERROR);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
@@ -722,7 +722,7 @@ NtUserActivateKeyboardLayout(
|
||||
{
|
||||
/* Get previous keyboard layout starting with current */
|
||||
if (pti->KeyboardLayout)
|
||||
pKl = pti->KeyboardLayout->pklNext;
|
||||
pKl = pti->KeyboardLayout->pklPrev;
|
||||
}
|
||||
else
|
||||
pKl = UserHklToKbl(hKl);
|
||||
|
||||
@@ -281,7 +281,7 @@ LoadKeyboardLayoutW(LPCWSTR pwszKLID,
|
||||
HKEY hKey;
|
||||
|
||||
/* LOWORD of dwhkl is Locale Identifier */
|
||||
dwhkl = wcstol(pwszKLID, NULL, 16);
|
||||
dwhkl = LOWORD(wcstoul(pwszKLID, NULL, 16));
|
||||
|
||||
if (Flags & KLF_SUBSTITUTE_OK)
|
||||
{
|
||||
@@ -305,7 +305,7 @@ LoadKeyboardLayoutW(LPCWSTR pwszKLID,
|
||||
StringCbCatW(wszRegKey, sizeof(wszRegKey), pwszKLID);
|
||||
|
||||
/* Open layout registry key for read */
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, wszRegKey, 0,
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, wszRegKey, 0,
|
||||
KEY_READ, &hKey) == ERROR_SUCCESS)
|
||||
{
|
||||
dwSize = sizeof(wszLayoutId);
|
||||
@@ -324,10 +324,13 @@ LoadKeyboardLayoutW(LPCWSTR pwszKLID,
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
else
|
||||
ERR("RegOpenKeyExW failed!\n");
|
||||
{
|
||||
ERR("Could not find keyboard layout %S.\n", pwszKLID);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* If Layout Id is not given HIWORD == LOWORD (for dwhkl) */
|
||||
if (!HIWORD(dwhkl))
|
||||
if (!HIWORD(dwhkl))
|
||||
dwhkl |= dwhkl << 16;
|
||||
|
||||
ZeroMemory(&ustrKbdName, sizeof(ustrKbdName));
|
||||
|
||||
Reference in New Issue
Block a user