Bug-org 835280 IME shouldn't be committed at activating composing window
初回投稿日時: 2013年02月07日19時03分50秒
カテゴリ: Mozilla Core Mozilla19 Mozilla20 Mozilla21 バグ修正 バグ却下
SNS:
Tweet (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)以降では修正が完了しています。