WM_INPUTLANGCHANGE is sent not posted.

svn path=/trunk/; revision=25923
This commit is contained in:
Saveliy Tretiakov 2007-02-28 13:23:51 +00:00
parent 05d4dee367
commit 9eea1f6b20
2 changed files with 8 additions and 12 deletions

View file

@ -7,7 +7,7 @@ typedef struct _KBL
{ {
LIST_ENTRY List; LIST_ENTRY List;
DWORD Flags; DWORD Flags;
WCHAR Name[9]; // used w GetKeyboardLayoutName same as wszKLID. WCHAR Name[KL_NAMELENGTH]; // used w GetKeyboardLayoutName same as wszKLID.
struct _KBDTABLES* KBTables; // KBDTABLES in ntoskrnl/include/internal/kbd.h struct _KBDTABLES* KBTables; // KBDTABLES in ntoskrnl/include/internal/kbd.h
HANDLE hModule; HANDLE hModule;
ULONG RefCount; ULONG RefCount;

View file

@ -318,10 +318,9 @@ static PKBL UserHklToKbl(HKL hKl)
return NULL; return NULL;
} }
static PKBL UserActivateKbl(PW32THREAD Thread, PKBL pKbl) static PKBL co_UserActivateKbl(PW32THREAD Thread, PKBL pKbl)
{ {
PKBL Prev; PKBL Prev;
MSG Msg;
Prev = Thread->KeyboardLayout; Prev = Thread->KeyboardLayout;
Prev->RefCount--; Prev->RefCount--;
@ -329,13 +328,10 @@ static PKBL UserActivateKbl(PW32THREAD Thread, PKBL pKbl)
pKbl->RefCount++; pKbl->RefCount++;
// Send WM_INPUTLANGCHANGE to thread's focus window // Send WM_INPUTLANGCHANGE to thread's focus window
co_IntSendMessage(Thread->MessageQueue->FocusWindow,
Msg.hwnd = Thread->MessageQueue->FocusWindow; WM_INPUTLANGCHANGE,
Msg.message = WM_INPUTLANGCHANGE; 0, // FIXME: put charset here (what is this?)
Msg.wParam = 0; // Charset. FIXME: what is this? (LPARAM)pKbl->hkl); //klid
Msg.lParam = (LPARAM)pKbl->hkl; // klid
MsqPostMessage(Thread->MessageQueue, &Msg, FALSE, QS_POSTMESSAGE);
return Prev; return Prev;
} }
@ -489,7 +485,7 @@ NtUserLoadKeyboardLayoutEx(
if(Flags & KLF_ACTIVATE) if(Flags & KLF_ACTIVATE)
{ {
UserActivateKbl(PsGetCurrentThreadWin32Thread(), pKbl); co_UserActivateKbl(PsGetCurrentThreadWin32Thread(), pKbl);
} }
Ret = pKbl->hkl; Ret = pKbl->hkl;
@ -547,7 +543,7 @@ NtUserActivateKeyboardLayout(
} }
else else
{ {
pKbl = UserActivateKbl(pWThread, pKbl); pKbl = co_UserActivateKbl(pWThread, pKbl);
Ret = pKbl->hkl; Ret = pKbl->hkl;
} }
} }