Bug 4503 リストボックス等の上にカーソルがある時に、そのスクロールバーが一番下までスクロールしている状態で、マウスのホイールを下方向に回しても、ページ全体が下方向にスクロールしないことがある
初回投稿日時: 2005-07-07 01:20:48
最終更新日時: 2005-07-07 01:29:46
カテゴリ: Mozilla Core
SNS:
Tweet (list)
リストボックスや、ページ内のoverflow:auto;
のブロック要素のスクロールバーを一番下までスクロールさせた状態で、その要素の上でマウスのホイールを使って下方向にスクロールしようとしても、その祖先要素(多くの場合、そのページそのもの)がスクロールしなかった問題。
Mozillaはホイールを回した時に、カーソルの下にあるフレーム(nsIFrame)に対して、最初にイベントを伝達する。 そのフレームがその方向にスクロールできない場合は親にイベントを再伝達していく。
このバグが発生している時、そのリストボックス等のフレームが実際にはスクロールできなくなっているのに、twips単位(内部処理用の、ピクセルより細かい疑似画素単位)のオフセットは、まだボックスの高さに対して余裕がある、つまり、スクロール可能だと判断している状態だ。
この原因は単純で、スクロールする時に、スクロールさせる余裕があるかどうかはピクセル単位で判断しているのに、ホイールイベントの発生時にはtwips単位で判断していたためだ。要するに、twips単位で余裕があっても、その余裕が1px分未満だと、実際にはスクロールできない訳だ。そこで、判断時にもtwipsを用いるようにしたのが提出中のパッチである。