Module: wine Branch: master Commit: f4f589c421154d0fa05faa87fd845e4455aabc67 URL: https://gitlab.winehq.org/wine/wine/-/commit/f4f589c421154d0fa05faa87fd845e4...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Jul 8 20:32:35 2022 +0200
imm32: Don't allow disabling other thread's IME by thread ID.
---
dlls/imm32/imm.c | 3 ++- dlls/imm32/tests/imm32.c | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c index f809e771cf8..c5b5895bec8 100644 --- a/dlls/imm32/imm.c +++ b/dlls/imm32/imm.c @@ -1022,7 +1022,7 @@ BOOL WINAPI ImmDisableIME(DWORD idThread) DestroyWindow(to_destroy); } } - else + else if (!idThread || idThread == GetCurrentThreadId()) { thread_data = IMM_GetThreadData(NULL, idThread); if (!thread_data) return FALSE; @@ -1033,6 +1033,7 @@ BOOL WINAPI ImmDisableIME(DWORD idThread) if (to_destroy) DestroyWindow(to_destroy); } + else return FALSE; return TRUE; }
diff --git a/dlls/imm32/tests/imm32.c b/dlls/imm32/tests/imm32.c index a7663376eee..c5409ce1708 100644 --- a/dlls/imm32/tests/imm32.c +++ b/dlls/imm32/tests/imm32.c @@ -2377,7 +2377,6 @@ static DWORD WINAPI check_not_disabled_ime_thread(void *arg) hwnd = CreateWindowA("static", "static", 0, 0, 0, 0, 0, 0, 0, 0, 0); ok(hwnd != NULL, "CreateWindow failed\n"); def = ImmGetDefaultIMEWnd(hwnd); - todo_wine ok(def != NULL, "ImmGetDefaultIMEWnd returned %p\n", def); return 0; } @@ -2403,7 +2402,6 @@ static void test_ImmDisableIME(void) thread = CreateThread(NULL, 0, check_not_disabled_ime_thread, event, 0, &tid); ok(thread != NULL, "CreateThread failed\n"); r = ImmDisableIME(tid); - todo_wine ok(!r, "ImmDisableIME(tid) succeeded\n"); SetEvent(event); WaitForSingleObject(thread, INFINITE);