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

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

もずはっく日記(2014年8月)

2014年8月12日

Bug-org 1049768 [TSF] Glitches in Chinese IME with intl.tsf.enable=true
初回投稿日時: 2014年08月12日01時02分03秒
最終更新日時: 2014年08月12日01時03分48秒
カテゴリ: Mozilla Core Mozilla34 TSF Windows バグ修正
SNS: (list)

台湾のサードパーティー製のIME、Free ChangJie IMEと、Easy Changjeiでは、一文字確定するためにスペースキーを押す度に、スペースと、確定された文字が入力される、というバグです。

nsTextStoreのログを調べてみると、これらのTIPからは、ITfContextOwnerCompositionSink::OnUpdateComposition()ITextStore::SetSelection()や、ITextStore::SetText()等の後に呼び出されるにも関わらず、新しい未確定文字列のレンジを引数で渡してきていないため、compositionupdateイベントと、そのためのtextイベントを発火させるための準備情報を完全に埋めないまま、これらのイベントが発火されてしました。これが、おかしな挙動の原因です。

今回の修正で、ITfContextOwnerCompositionSink::OnUpdateComposition()が更新済みのレンジを引数で受け取らなかった場合、compositionupdateの発火を未完であることを明示した上で予約しておき、ドキュメントのロックが解除される時に、予約されたその情報が未完のままであれば、その場で最新の情報を取得した後でイベントを発火するように修正しました。

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

bug-org 1049768を含むエントリ