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

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

もずはっく日記(2010年7月)

2010年7月31日

Bug-org 581764 [IMM32] Sometimes ATOK failed to initialize Kana-Nyuryoku mode
初回投稿日時: 2010年07月31日12時47分23秒
最終更新日時: 2010年07月31日12時51分39秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

Mozillazineへの書き込みから修正できたバグです。前々から時々、かな打ちができなくなることはありましたが、再現方法や原因がまったく分かりませんでした。しかし、この書き込みで再現方法を絞り込んでくれたため、割と楽に修正することができました。ためしてみたさん、ありがとう。

原因は古いMS-IME向けに、WM_IME_STARTCOMPOSITIONが送信されていなくてもWM_IME_COMPOSITIONを処理するときに強制的にcompositionを開始していたことでした。

ATOKは、何故かWM_IME_STARTCOMPOSITIONの直前でWM_IME_COMPOSITIONを送信してきます。おそらく何らかのアプリのバグへの対応だと思うのですが、問題はこの時にAPIを使ってATOKにアクセスすると、ATOK内部のかな打ち入力モード固有の初期化処理が走りきらないまま、処理を打ち切っているような印象の振る舞いをしていることでした(ちなみに、文字パレットからの入力だとこのWM_IME_COMPOSITIONが来なかったりするのでもう要らない処理なのにリスクマネージメントから残してるだけじゃないかという感じがしますが)

今回、compositionが始まっていない状態でWM_IME_COMPOSITIONを受信した時に、次のcompositionのメッセージがWM_IME_STARTCOMPOSITIONで、なおかつその後ろにWM_IME_COMPOSITIONWM_IME_ENDCOMPOSITIONの前に控えていれば、そのWM_IME_COMPOSITIONを無視しても同じ処理結果になるはずなので、この条件でのみそれを無視するように修正しました。

特に問題がなければbranchでの修正も申請してみます。

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

bug-org 581764を含むエントリ

Bug-org 581764 [IMM32] Sometimes ATOK failed to initialize Kana-Nyuryoku mode #2