From: Akihiro Sagawa Subject: [3/3] imm32/tests: Add ImmDisableIME tests. (resend) Message-Id: <20160619220335.7A6F.375B48EC@gmail.com> Date: Sun, 19 Jun 2016 22:04:42 +0900 Signed-off-by: Akihiro Sagawa --- dlls/imm32/tests/imm32.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/dlls/imm32/tests/imm32.c b/dlls/imm32/tests/imm32.c index cd8691c..46b8ce5 100644 --- a/dlls/imm32/tests/imm32.c +++ b/dlls/imm32/tests/imm32.c @@ -173,7 +173,7 @@ static void msg_spy_cleanup(void) { */ static const char wndcls[] = "winetest_imm32_wndcls"; static enum { PHASE_UNKNOWN, FIRST_WINDOW, SECOND_WINDOW, - CREATE_CANCEL, NCCREATE_CANCEL } test_phase; + CREATE_CANCEL, NCCREATE_CANCEL, IME_DISABLED } test_phase; static HWND hwnd; static HWND get_ime_window(void); @@ -189,6 +189,7 @@ static LRESULT WINAPI wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) default_ime_wnd = get_ime_window(); switch(test_phase) { case FIRST_WINDOW: + case IME_DISABLED: ok(!default_ime_wnd, "expected no IME windows\n"); break; case SECOND_WINDOW: @@ -208,6 +209,9 @@ static LRESULT WINAPI wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) case CREATE_CANCEL: ok(default_ime_wnd != NULL, "expected IME window existence\n"); break; + case IME_DISABLED: + todo_wine ok(!default_ime_wnd, "expected no IME windows\n"); + break; default: break; /* do nothing */ } @@ -220,6 +224,9 @@ static LRESULT WINAPI wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) case CREATE_CANCEL: ok(default_ime_wnd != NULL, "expected IME window existence\n"); break; + case IME_DISABLED: + todo_wine ok(!default_ime_wnd, "expected no IME windows\n"); + break; default: break; /* do nothing */ } @@ -1009,6 +1016,23 @@ static DWORD WINAPI test_default_ime_window_cancel_cb(void *arg) return 1; } +static DWORD WINAPI test_default_ime_disabled_cb(void *arg) +{ + HWND hWnd, default_ime_wnd; + + ok(!get_ime_window(), "Expected no IME windows\n"); + ImmDisableIME(0); /* disable IME for this thread */ + test_phase = IME_DISABLED; + hWnd = CreateWindowExA(WS_EX_CLIENTEDGE, wndcls, "Wine imm32.dll test", + WS_OVERLAPPEDWINDOW | WS_VISIBLE, + CW_USEDEFAULT, CW_USEDEFAULT, + 240, 120, NULL, NULL, GetModuleHandleW(NULL), NULL); + default_ime_wnd = ImmGetDefaultIMEWnd(hWnd); + todo_wine ok(!default_ime_wnd, "Expected no IME windows\n"); + DestroyWindow(hWnd); + return 1; +} + static void test_default_ime_window_creation(void) { HANDLE thread; @@ -1045,6 +1069,10 @@ static void test_default_ime_window_creation(void) } } + thread = CreateThread(NULL, 0, test_default_ime_disabled_cb, NULL, 0, NULL); + WaitForSingleObject(thread, INFINITE); + CloseHandle(thread); + test_phase = PHASE_UNKNOWN; }