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

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

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

2014年1月29日

Bug-org 835262 [TSF] Should keep composition when we are deactivated
初回投稿日時: 2014年01月29日21時18分09秒
最終更新日時: 2014年01月29日21時42分51秒
カテゴリ: Mozilla Core Mozilla29 TSF Windows バグ修正
SNS: (list)

TSFモードでも、未確定文字列が、Firefox自体がディアクティブになった際に、強制確定すべきではない、というバグです。

強制確定のトリガを引いていたのは、nsIMEStateManagerで、全てのウインドウがディアクティブになる際に、nsTextStateManagerを破棄していました。このため、nsTextStoreが、フォーカスを失ったという通知を受け、強制確定を行っていました。

今回の修正で、nsIMEUpdatePreferenceに、NOTIFY_DURING_DEACTIVEという値を追加し、nsTextStoreはこの値を含めて返すようにしました。これが設定されていると、nsIMEStateManagerは、ウインドウのディアクティベイト時にはnsTextStateManagerを破棄しないようになりました。これにより、nsTextStoreが、フォーカスを失ったという通知を受け取らなくなっています。

なお、MS-IMEは、WinXP以降、全てのバージョンで、TSF-awareアプリ上では、そのスレッドがフォーカスを失う際に自動的に強制確定するため、ウインドウがディアクティブになった際に確定されてしまうことに注意してください。これは、MS-IME固有の仕様です。

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

bug-org 835262を含むエントリ