この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2005年2月)

2005年2月19日

Bug 4253 [WXG] テキストボックスへの入力が確定後も未確定文字として表示が残る #2
初回投稿日時: 2005年02月19日19時58分16秒
カテゴリ: Mozilla Core
SNS: (list)

WXGで再現していたこのバグも1.8b1に修正が間に合った。

IMEのcomposition windowを利用せずに、独自描画のやり方を改めて調査してみたところ、その方法には二つのステップがあり、

  1. WM_IME_SETCONTEXTで、lParamからISC_SHOWUICOMPOSITIONWINDOWを取り除く
  2. WM_IME_COMPOSITIONを適切に処理し、デフォルトウインドウプロシージャへ渡さない

ということのようだ。

要するに、IMEの未確定文字列が何らかの変更を受けるときに、デフォルトウインドウプロシージャに処理を任せてしまうと、その時点でcomposition windowが表示されてしまうし、それを消すこともできない。(ひょっとするとそのウインドウハンドルを取得していじれるのかもしれないが、やり方が分からない)

そのため、WXGの様に他のIMEとは異なり、勝手にcompsition windowを表示されてしまうと、手が付けられないし、元々、WM_IME_COMPOSITIONWM_IME_ENDCOMPOSITIONもデフォルトウインドウプロシージャに渡していないので、それを消すタイミングをWXGの方もつかめなくなっていたわけだ。(でも、現在の挙動だと、フローティングウインドウ上に同じ内容が出て、適切に消えるのでWXGの単なるバグのような気もする。)

とりあえず、今回の件により、WXGのナビキャレットをキャレット位置に表示する、ということはできなくなってしまった。

関連するかもしれないエントリ

bug 4253を含むエントリ

Bug 4253 [WXG] テキストボックスへの入力が確定後も未確定文字として表示が残る