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

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

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

2014年7月24日

Bug-org 962920 [TSF] Should commit composition at entering modal state
初回投稿日時: 2014年07月24日05時19分56秒
最終更新日時: 2014年07月24日05時39分11秒
カテゴリ: Mozilla Core Mozilla33 TSF Windows バグ修正
SNS: (list)

TSFモードで、未確定文字列がある時に、ファイルを開くダイアログ等を表示すると、未確定文字列が確定されず、ダイアログ上で何も入力できない、というバグです。

TSFはスレッド単位で管理されているシステムなので、ブラウザ自体のIMEと、Windowsネイティブのダイアログ上とで、同じコンテキストを共有していることになります。このため、ブラウザ自体で未確定文字列を確定せずに掴んだままだと、ネイティブダイアログ上でどうしようもなくなる、というのがこのバグの原因です。

正攻法ではないのですが、ネイティブのモーダルダイアログが開くと、WM_ENTERIDLEが親ウインドウに送信されますので、これを受け取ったら、強制確定するように修正しました。理想的なアプローチとしては、ネイティブのモーダルダイアログを開くAPIを呼び出す直前で強制確定を行うようにすべきですが、メンテナンス性が悪く、新しいダイアログのサポート時に対応が漏れる可能性がある上、手間がかなりかかることから、このようなアプローチに落ち着いています。

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

bug-org 962920を含むエントリ