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:
Tweet (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_COMPOSITION
がWM_IME_ENDCOMPOSITION
の前に控えていれば、そのWM_IME_COMPOSITION
を無視しても同じ処理結果になるはずなので、この条件でのみそれを無視するように修正しました。
特に問題がなければbranchでの修正も申請してみます。