[KBSWITCH] Update layout list on WM_NOTIFYICONMSG

The layout list was not updated correctly.
CORE-10667
This commit is contained in:
Katayama Hirofumi MZ 2023-10-30 10:40:27 +09:00
parent aed376e00f
commit 87f94aa10c

View file

@ -145,16 +145,9 @@ static VOID UpdateLayoutList(HKL hKL OPTIONAL)
if (!hKL) if (!hKL)
{ {
if (0 <= (g_nCurrentLayoutNum - 1) && (g_nCurrentLayoutNum - 1) < g_cKLs) HWND hwndTarget = (g_hwndLastActive ? g_hwndLastActive : GetForegroundWindow());
{ DWORD dwTID = GetWindowThreadProcessId(hwndTarget, NULL);
hKL = g_ahKLs[g_nCurrentLayoutNum - 1]; hKL = GetKeyboardLayout(dwTID);
}
else
{
HWND hwndTarget = (g_hwndLastActive ? g_hwndLastActive : GetForegroundWindow());
DWORD dwTID = GetWindowThreadProcessId(hwndTarget, NULL);
hKL = GetKeyboardLayout(dwTID);
}
} }
g_cKLs = GetKeyboardLayoutList(ARRAYSIZE(g_ahKLs), g_ahKLs); g_cKLs = GetKeyboardLayoutList(ARRAYSIZE(g_ahKLs), g_ahKLs);
@ -737,6 +730,8 @@ WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
case WM_RBUTTONUP: case WM_RBUTTONUP:
case WM_LBUTTONUP: case WM_LBUTTONUP:
{ {
UpdateLayoutList(NULL);
GetCursorPos(&pt); GetCursorPos(&pt);
SetForegroundWindow(hwnd); SetForegroundWindow(hwnd);