mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 04:13:32 +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:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user