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

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

もずはっく日記(2013年2月)

2013年2月7日

Bug-org 835280 IME shouldn't be committed at activating composing window
初回投稿日時: 2013年02月07日19時03分50秒
カテゴリ: Mozilla Core Mozilla19 Mozilla20 Mozilla21 バグ修正 バグ却下
SNS: (list)

Bug-org 805766の修正によるregressionです。

designModeエディタでは、フォーカスイベントがどの要素でも発生しないため、nsIMEStateManager::OnChangeFocus()が呼び出されないことが問題だったため、ドキュメントでフォーカスイベントが発生するタイミングでもnsIMEStateManager::OnChangeFocus()を呼び出すようにしました。

しかし、ここに何の制限も加えていなかったため、エディタにフォーカスがある状態でFirefox以外のアプリをアクティブにし、その状態でFirefoxのウインドウをアクティブにすると、まず、ドキュメントがフォーカスイベントを受け取る直前に、nsIMEStateManagerは、エディタが一端、ドキュメント内でもフォーカスを失った(DOMで言うなら、アクティブな要素ではなくなった)と誤解し、その直後、そのエディタでフォーカスイベントが発生する際に、再びフォーカスを得た誤解していました。もちろん、実際には、アクティブな要素はエディタの要素のままで、一度も非アクティブにはなっていませんので、nsIMEStateManagerの状態把握が誤っていることになります。ですが、この誤解のため、ドキュメントのフォーカスイベントの直前でnsIMEStateManagerがIMEを強制確定してしまっていました。

この修正では、designModeエディタ以外のエディタがフォーカスを持っている場合には、Bug-org 805766の修正が必要ありませんので、Bug-org 805766の修正である、nsIMEStateManager::OnChangeFocus()の新しい呼び出しを、そのドキュメントがdesignModeの場合にのみ行うように制限しています。

このバグは、今月リリースされるFirefox 19から発生していますが、Firefox 19での修正は、リスクとユーザへの影響のバランスから、見送られることになりました。異論がある場合、つまり、修正しなければならない、深刻な理由があると考える場合はバグの方へ直接コメントをお願いします。

既に、Firefox 20 (Aurora)以降では修正が完了しています。

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

bug-org 835280を含むエントリ