Subject: Re: bug#11732: 24.1; Microsoft IME Japanese input problem

From: Eli Zaretskii <[email-masked]>
Date: Thu, 19 Feb 2015 13:44:29 +0200

> Date: Thu, 19 Feb 2015 19:40:18 +0900
> From: Fujii Hironori <[email-masked]>
> 
> >> | Remarks
> >> |
> >> | This message is a notification to an IME window to open its
> >> | composition window. An application should process this message if it
> >> | displays composition characters itself.
> >> |
> >> | If an application has created an IME window, it should pass this
> >> | message to that window. The DefWindowProc function processes the
> >> | message by passing it to the default IME window.
> >
> > Yes, I've read that, but it's still not clear to me what that mean in
> > practice.  Are you saying that ImmSetCompositionWindow only sets the
> > position of the composition window, but it will not be shown unless we
> > pass WM_IME_STARTCOMPOSITION to DefWindowProc?
> 
> Yes, I am.
> 
> > In that case, how will
> > Windows know that the composition window we positioned is "the default
> > IME window"?
> 
> I don't understand what this means.
> The default IME window is not a composition window, but opens its
> composition window.
> 
> In SDK document, there are some hints what the default IME window is.
> 
> https://msdn.microsoft.com/en-us/library/windows/desktop/dd318561(v=vs.85).aspx
> 
> | The operating system creates a default IME window for every
> | thread. The window is created based on the IME class.
> 
> https://msdn.microsoft.com/en-us/library/windows/desktop/dd318170(v=vs.85).aspx
> 
> | IME Window Class
> |
> | The IME window class is a predefined system global class that defines
> | the appearance and behavior of the standard IME windows. The class is
> | similar to common control classes in that the application creates a
> | window of this class by using the CreateWindowEx function. Like static
> | controls, an IME window does not respond to user input by
> | itself. Instead, it notifies the IME of user input actions and
> | processes control messages sent to it by the IME or applications to
> | carry out a response to the user action.
> 
> > Or are you saying we should be calling ImmSetCompositionWindow at all?
> > That call was introduced as result of solving bugs #2570 and #2569, so
> > I think the call or its equivalent should stay.
> 
> I don't understand what this means.
> ImmSetCompositionWindow should be called, of course.
> 
> > Sorry I'm asking all these questions, but I don't know enough about
> > IME programming, and need to understand this in order to see that the
> > patch doesn't break anything else.
> 
> Current Emacs's IME implementation has this bug.
> It's almost imposible to input desired text because of the invisible
> composition window.
> This patch is nice improvement.

Thanks, I installed your change in the development sources, as commit
37e3549, and I'm marking this bug "done".