(try 3) imm32: there is only 1 default Hwnd per thread

Aric Stewart aric at codeweavers.com
Wed Sep 26 10:22:39 CDT 2012

On 9/26/12 10:18 AM, Alexandre Julliard wrote:
> Aric Stewart <aric at codeweavers.com> writes:
>> -    if (data->imeWnd == NULL)
>> +    if (defWnd == NULL)
>>       {
>>           /* create the ime window */
>> -        data->imeWnd = CreateWindowExW( WS_EX_TOOLWINDOW,
>> +        defWnd = CreateWindowExW( WS_EX_TOOLWINDOW,
>>                       data->immKbd->imeClassName, NULL, WS_POPUP, 0, 0, 1, 1, 0,
>>                       0, data->immKbd->hIME, 0);
>> -        SetWindowLongPtrW(data->imeWnd, IMMGWL_IMC, (LONG_PTR)data);
>> -        IMM_GetThreadData()->hwndDefault = data->imeWnd;
>> +        SetWindowLongPtrW(defWnd, IMMGWL_IMC, (LONG_PTR)data);
>> +        IMM_GetThreadData()->hwndDefault = defWnd;
> So now, shouldn't you be resetting IMMGWL_IMC at some point?
Yeah, I am digging into that as we speak. My testing on testbot is not giving me any real rational results on that area. At least nothing matching my documentation as to how it is suppose to work. I need to get my Japanese VM back up and working and really try to dig into that.

Right now it is working and more correct that it was. My guess is that we should not be dealing with IMMGWL_IMC at all at that point anyway. 

Do you want to delay on this fix until I figure our what should be happening with IMMGWL_IMC. Or I can have a second patch addressing IMMGWL_IMC and how that is suppose to be handled.


More information about the wine-devel mailing list