Bug-org 591890 Focus element from mouseDown event doesn't work when the focus is set to an chrome element
初回投稿日時: 2010年11月13日13時11分27秒
カテゴリ: Mozilla Core バグ修正
SNS:
Tweet (list)
Bug 6609の修正によるregressionで、chromeにフォーカスがある時に、contentのmousedownイベントハンドラで、同じdocument内の別の要素にフォーカスをセットしようとしてもできない、というバグです。
chromeにフォーカスがある場合、contentはフォーカスを奪えなくなりましたが、ここにタイミングの問題がありました。
Geckoはmousedownイベントの処理の最終段階、つまり、全関連要素でmousedownイベントが発生した後の処理でフォーカスの移動処理を行います。このため、chromeにフォーカスがある場合に、content内のどこかでマウスのボタンを押しても、そのmousedowneイベントのハンドラが呼ばれた段階では、まだchromeがフォーカスを持っていて、そのハンドラの権限ではフォーカスを奪うことができない、という形でハマってしまっていました。
今回の修正では、mousedownイベントの内部処理の初期段階でnsFocusManager
にmousedown中のdocumentを通知するようにしました。そしてnsFocusManager
では、mousedownイベント中のdocumentのハンドラがフォーカス移動処理の呼び出しもとであるなら、chromeからのフォーカス奪取を許可するように修正しました。