mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 16:22:58 +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
4 changed files with 37 additions and 10 deletions
|
@ -68,8 +68,8 @@ BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected);
|
||||||
VOID NTAPI UserProcessMouseInput(PMOUSE_INPUT_DATA Data, ULONG InputCount);
|
VOID NTAPI UserProcessMouseInput(PMOUSE_INPUT_DATA Data, ULONG InputCount);
|
||||||
BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
|
BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
|
||||||
BOOL FASTCALL IntMouseInput(MOUSEINPUT *mi, BOOL Injected);
|
BOOL FASTCALL IntMouseInput(MOUSEINPUT *mi, BOOL Injected);
|
||||||
BOOL UserInitDefaultKeyboardLayout(VOID);
|
PKL NTAPI UserHklToKbl(HKL hKl);
|
||||||
PKL UserHklToKbl(HKL hKl);
|
BOOL NTAPI UserSetDefaultInputLang(HKL hKl);
|
||||||
VOID NTAPI KeyboardThreadMain(PVOID StartContext);
|
VOID NTAPI KeyboardThreadMain(PVOID StartContext);
|
||||||
DWORD NTAPI CreateSystemThreads(UINT Type);
|
DWORD NTAPI CreateSystemThreads(UINT Type);
|
||||||
BOOL FASTCALL UserAttachThreadInput(PTHREADINFO,PTHREADINFO,BOOL);
|
BOOL FASTCALL UserAttachThreadInput(PTHREADINFO,PTHREADINFO,BOOL);
|
||||||
|
|
|
@ -448,14 +448,13 @@ BOOL APIENTRY
|
||||||
NtUserUnregisterHotKey(HWND hWnd, int id)
|
NtUserUnregisterHotKey(HWND hWnd, int id)
|
||||||
{
|
{
|
||||||
PHOT_KEY pHotKey = gphkFirst, phkNext, *pLink = &gphkFirst;
|
PHOT_KEY pHotKey = gphkFirst, phkNext, *pLink = &gphkFirst;
|
||||||
PWND pWnd;
|
|
||||||
BOOL bRet = FALSE;
|
BOOL bRet = FALSE;
|
||||||
|
|
||||||
TRACE("Enter NtUserUnregisterHotKey\n");
|
TRACE("Enter NtUserUnregisterHotKey\n");
|
||||||
UserEnterExclusive();
|
UserEnterExclusive();
|
||||||
|
|
||||||
pWnd = UserGetWindowObject(hWnd);
|
/* Fail if given window is invalid */
|
||||||
if (!pWnd)
|
if (hWnd && !UserGetWindowObject(hWnd))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
while (pHotKey)
|
while (pHotKey)
|
||||||
|
|
|
@ -324,6 +324,7 @@ W32kGetDefaultKeyLayout(VOID)
|
||||||
* Gets KL object from hkl value
|
* Gets KL object from hkl value
|
||||||
*/
|
*/
|
||||||
PKL
|
PKL
|
||||||
|
NTAPI
|
||||||
UserHklToKbl(HKL hKl)
|
UserHklToKbl(HKL hKl)
|
||||||
{
|
{
|
||||||
PKL pKl = gspklBaseLayout;
|
PKL pKl = gspklBaseLayout;
|
||||||
|
@ -342,6 +343,25 @@ UserHklToKbl(HKL hKl)
|
||||||
return NULL;
|
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
|
* co_UserActivateKbl
|
||||||
*
|
*
|
||||||
|
@ -598,9 +618,6 @@ NtUserLoadKeyboardLayoutEx(
|
||||||
/* If this layout was prepared to unload, undo it */
|
/* If this layout was prepared to unload, undo it */
|
||||||
pKl->dwKL_Flags &= ~KLF_UNLOAD;
|
pKl->dwKL_Flags &= ~KLF_UNLOAD;
|
||||||
|
|
||||||
/* Loaded keyboard layout became the default */
|
|
||||||
gspklBaseLayout = pKl;
|
|
||||||
|
|
||||||
/* Activate this layout in current thread */
|
/* Activate this layout in current thread */
|
||||||
if (Flags & KLF_ACTIVATE)
|
if (Flags & KLF_ACTIVATE)
|
||||||
co_UserActivateKbl(PsGetCurrentThreadWin32Thread(), pKl, Flags);
|
co_UserActivateKbl(PsGetCurrentThreadWin32Thread(), pKl, Flags);
|
||||||
|
|
|
@ -1167,8 +1167,19 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SPI_SETDEFAULTINPUTLANG:
|
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:
|
case SPI_SETLANGTOGGLE:
|
||||||
ERR("SPI_SETLANGTOGGLE is unimplemented\n");
|
ERR("SPI_SETLANGTOGGLE is unimplemented\n");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue