mirror of
https://github.com/reactos/reactos.git
synced 2024-09-28 21:44:31 +00:00
[WIN32K]
- Don't set every loaded layout as default. Instead implement SPI_SETDEFAULTINPUTLANG. Fixes some minor problems with wrong layout loaded. - Fix removing hotkey not associated with window (fixes winetest). svn path=/trunk/; revision=54223
This commit is contained in:
parent
7940686557
commit
af5cf6965c
|
@ -68,8 +68,8 @@ BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected);
|
|||
VOID NTAPI UserProcessMouseInput(PMOUSE_INPUT_DATA Data, ULONG InputCount);
|
||||
BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
|
||||
BOOL FASTCALL IntMouseInput(MOUSEINPUT *mi, BOOL Injected);
|
||||
BOOL UserInitDefaultKeyboardLayout(VOID);
|
||||
PKL UserHklToKbl(HKL hKl);
|
||||
PKL NTAPI UserHklToKbl(HKL hKl);
|
||||
BOOL NTAPI UserSetDefaultInputLang(HKL hKl);
|
||||
VOID NTAPI KeyboardThreadMain(PVOID StartContext);
|
||||
DWORD NTAPI CreateSystemThreads(UINT Type);
|
||||
BOOL FASTCALL UserAttachThreadInput(PTHREADINFO,PTHREADINFO,BOOL);
|
||||
|
|
|
@ -448,14 +448,13 @@ BOOL APIENTRY
|
|||
NtUserUnregisterHotKey(HWND hWnd, int id)
|
||||
{
|
||||
PHOT_KEY pHotKey = gphkFirst, phkNext, *pLink = &gphkFirst;
|
||||
PWND pWnd;
|
||||
BOOL bRet = FALSE;
|
||||
|
||||
TRACE("Enter NtUserUnregisterHotKey\n");
|
||||
UserEnterExclusive();
|
||||
|
||||
pWnd = UserGetWindowObject(hWnd);
|
||||
if (!pWnd)
|
||||
/* Fail if given window is invalid */
|
||||
if (hWnd && !UserGetWindowObject(hWnd))
|
||||
goto cleanup;
|
||||
|
||||
while (pHotKey)
|
||||
|
|
|
@ -324,6 +324,7 @@ W32kGetDefaultKeyLayout(VOID)
|
|||
* Gets KL object from hkl value
|
||||
*/
|
||||
PKL
|
||||
NTAPI
|
||||
UserHklToKbl(HKL hKl)
|
||||
{
|
||||
PKL pKl = gspklBaseLayout;
|
||||
|
@ -342,6 +343,25 @@ UserHklToKbl(HKL hKl)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* UserSetDefaultInputLang
|
||||
*
|
||||
* Sets default kyboard layout for system. Called from UserSystemParametersInfo.
|
||||
*/
|
||||
BOOL
|
||||
NTAPI
|
||||
UserSetDefaultInputLang(HKL hKl)
|
||||
{
|
||||
PKL pKl;
|
||||
|
||||
pKl = UserHklToKbl(hKl);
|
||||
if (!pKl)
|
||||
return FALSE;
|
||||
|
||||
gspklBaseLayout = pKl;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* co_UserActivateKbl
|
||||
*
|
||||
|
@ -598,9 +618,6 @@ NtUserLoadKeyboardLayoutEx(
|
|||
/* If this layout was prepared to unload, undo it */
|
||||
pKl->dwKL_Flags &= ~KLF_UNLOAD;
|
||||
|
||||
/* Loaded keyboard layout became the default */
|
||||
gspklBaseLayout = pKl;
|
||||
|
||||
/* Activate this layout in current thread */
|
||||
if (Flags & KLF_ACTIVATE)
|
||||
co_UserActivateKbl(PsGetCurrentThreadWin32Thread(), pKl, Flags);
|
||||
|
|
|
@ -1167,8 +1167,19 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
|
|||
break;
|
||||
|
||||
case SPI_SETDEFAULTINPUTLANG:
|
||||
ERR("SPI_SETDEFAULTINPUTLANG is unimplemented\n");
|
||||
break;
|
||||
{
|
||||
HKL hkl;
|
||||
|
||||
if (!SpiSet(&hkl, pvParam, sizeof(hkl), fl))
|
||||
return FALSE;
|
||||
|
||||
if (fl & SPIF_UPDATEINIFILE)
|
||||
{
|
||||
// FIXME: what to do?
|
||||
}
|
||||
|
||||
return UserSetDefaultInputLang(hkl);
|
||||
}
|
||||
|
||||
case SPI_SETLANGTOGGLE:
|
||||
ERR("SPI_SETLANGTOGGLE is unimplemented\n");
|
||||
|
|
Loading…
Reference in a new issue