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

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

もずはっく日記(2012年11月)

2012年11月4日

Bug-org 805766 [TSF] TSF isn't available on designMode editor
初回投稿日時: 2012年11月04日18時54分28秒
カテゴリ: Mozilla Core Mozilla19 TSF Windows バグ修正
SNS: (list)

WindowsでTSFモードで動かしていても、designModeで編集可能なドキュメントではTSFではなく、IMMでIMEが動いてしまうというバグです。

designModeで編集可能なドキュメントは、要素はフォーカスを持たず、ドキュメントのみがフォーカスを持つことができるという特殊な動作を行います。このため、HTMLエディタのフォーカスイベントのハンドラがnsTextStateManagerの生成をnsIMEStateManagerに促さないといけないのですが、nsFocusManagerが、ドキュメントにフォーカスイベントを送信する前に、nsIMEStateManager::OnFocusChange()を呼び出していなかったため、nsIMEStateManagerはフォーカスを持っていると思っている要素は、直前にフォーカスを持っていた要素だと思い(つまり、別のドキュメントがフォーカスを持っていると判断され)、処理に失敗していたのがこのバグの原因でした。

修正自体は単純で、フォーカスイベントを送信する前に、nsIMEStateManager::OnFocusChange()を呼び出し、状態のズレがなくなるようになっています。

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

bug-org 805766を含むエントリ