cleanup IME_UpdateInputLocale - do not store the HKL in a static variable - always set the ime_candvertical value in case the HKL is changed
diff --git a/src/video/windows/SDL_windowskeyboard.c b/src/video/windows/SDL_windowskeyboard.c
index c1237d5..c68fe10 100644
--- a/src/video/windows/SDL_windowskeyboard.c
+++ b/src/video/windows/SDL_windowskeyboard.c
@@ -712,26 +712,13 @@ IME_SetWindow(SDL_VideoData* videodata, HWND hwnd)
static void
IME_UpdateInputLocale(SDL_VideoData *videodata)
{
- static HKL hklprev = 0;
- videodata->ime_hkl = GetKeyboardLayout(0);
- if (hklprev == videodata->ime_hkl)
- return;
+ HKL hklnext = GetKeyboardLayout(0);
- hklprev = videodata->ime_hkl;
- switch (PRIMLANG()) {
- case LANG_CHINESE:
- videodata->ime_candvertical = SDL_TRUE;
- if (SUBLANG() == SUBLANG_CHINESE_SIMPLIFIED)
- videodata->ime_candvertical = SDL_FALSE;
+ if (hklnext == videodata->ime_hkl)
+ return;
- break;
- case LANG_JAPANESE:
- videodata->ime_candvertical = SDL_TRUE;
- break;
- case LANG_KOREAN:
- videodata->ime_candvertical = SDL_FALSE;
- break;
- }
+ videodata->ime_hkl = hklnext;
+ videodata->ime_candvertical = (PRIMLANG() == LANG_KOREAN || LANG() == LANG_CHS) ? SDL_FALSE : SDL_TRUE;
}
static void