Akihiro Sagawa sagawa.aki@gmail.com writes:
- /* create default IME window */
- if (imm_register_window && needs_ime_window( hwnd ))
- {
struct user_thread_info *thread_info = get_user_thread_info();
thread_info->ime_win_refs++;
TRACE("ime_win_refs=%u\n", thread_info->ime_win_refs);
if (thread_info->ime_win_refs == 1)
{
HWND win = imm_register_window( hwnd );
TRACE("create ime window (hwnd=%p)\n", win);
}
- }
- /* send WM_NCCALCSIZE */
Do you have a test showing that this is supposed to happen between WM_NCCREATE and WM_NCCALCSIZE? If not, I think it would be useful to add one. Also since the window class is in user32 now the window creation could probably happen there too.
On Fri, 27 May 2016 12:39:27 +0900, Alexandre Julliard wrote:
Do you have a test showing that this is supposed to happen between WM_NCCREATE and WM_NCCALCSIZE? If not, I think it would be useful to add one.
Yes. I wrote a patch [1/5] showing that the IME window is created between WM_NCCREATE and WM_NCCALCSIZE.
Also since the window class is in user32 now the window creation could probably happen there too.
Regarding window creation, I think imm32 is better. Because imm32 has ImmDisableIME API. It affects IME window creation as seen in patch [5/5]. If I implement the API, its settings will be stored in IMMThreadData, and it will be referred on window creation. So, creating the IME window in imm32 makes sense.
I also sent a patch showing some case behaviors: - Patch [2/5] tests when the first window of a thread is a child window. - Patch [3/5] tests when WM_CREATE returns -1.
Thanks for reviewing.
Akihiro Sagawa
Akihiro Sagawa sagawa.aki@gmail.com writes:
On Fri, 27 May 2016 12:39:27 +0900, Alexandre Julliard wrote:
Do you have a test showing that this is supposed to happen between WM_NCCREATE and WM_NCCALCSIZE? If not, I think it would be useful to add one.
Yes. I wrote a patch [1/5] showing that the IME window is created between WM_NCCREATE and WM_NCCALCSIZE.
Thanks!
Also since the window class is in user32 now the window creation could probably happen there too.
Regarding window creation, I think imm32 is better. Because imm32 has ImmDisableIME API. It affects IME window creation as seen in patch [5/5]. If I implement the API, its settings will be stored in IMMThreadData, and it will be referred on window creation. So, creating the IME window in imm32 makes sense.
OK, in that case I'd say the other checks (system metrics, class name, refcount) should all be in imm32 too.