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

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

もずはっく日記(2005年7月)

2005年7月7日

Bug 4503 リストボックス等の上にカーソルがある時に、そのスクロールバーが一番下までスクロールしている状態で、マウスのホイールを下方向に回しても、ページ全体が下方向にスクロールしないことがある
初回投稿日時: 2005年07月07日01時20分48秒
最終更新日時: 2005年07月07日01時29分46秒
カテゴリ: Mozilla Core
SNS: (list)

リストボックスや、ページ内のoverflow:auto;のブロック要素のスクロールバーを一番下までスクロールさせた状態で、その要素の上でマウスのホイールを使って下方向にスクロールしようとしても、その祖先要素(多くの場合、そのページそのもの)がスクロールしなかった問題。

Mozillaはホイールを回した時に、カーソルの下にあるフレーム(nsIFrame)に対して、最初にイベントを伝達する。 そのフレームがその方向にスクロールできない場合は親にイベントを再伝達していく。

このバグが発生している時、そのリストボックス等のフレームが実際にはスクロールできなくなっているのに、twips単位(内部処理用の、ピクセルより細かい疑似画素単位)のオフセットは、まだボックスの高さに対して余裕がある、つまり、スクロール可能だと判断している状態だ。

この原因は単純で、スクロールする時に、スクロールさせる余裕があるかどうかはピクセル単位で判断しているのに、ホイールイベントの発生時にはtwips単位で判断していたためだ。要するに、twips単位で余裕があっても、その余裕が1px分未満だと、実際にはスクロールできない訳だ。そこで、判断時にもtwipsを用いるようにしたのが提出中のパッチである。

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

bug 4503を含むエントリ

Bug 4503 リストボックス等の上にカーソルがある時に、そのスクロールバーが一番下までスクロールしている状態で、マウスのホイールを下方向に回しても、ページ全体が下方向にスクロールしないことがある #2