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

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

もずはっく日記(2012年8月)

2012年8月16日

Bug-org 422132 font size 0px on div with scrollbars disables mouse wheel scrolling
初回投稿日時: 2012年08月16日13時23分28秒
カテゴリ: Mozilla Core Mozilla17 バグ修正
SNS: (list)

font-size: 0;のスクロール可能な要素では、ホイールによってスクロールできない、というバグです。実際には、キーボードの矢印キーでもスクロールできませんでした。

nsIScrollableFrame::GetScrollLineAmount()がフォントサイズを元に、行高を返してくるので、この値を元にスクロール処理を行うのですが、中途半端なことに、このメソッドはfont-size: 0;の場合に、1 app unitを返してきていました。これは、Gecko内部では、60分の1pxとなりますので結果、スクロールしないという形になっていました。

このバグの修正で、mousewheel.min_line_scroll_amountという設定を追加しました。nsIScrollableFrame::GetScrollLineAmount()は、この設定値(意味はピクセル数)より、計算した戻り値が小さい場合、この設定値と同じ意味の値を返すようになります。

また、ホイールイベントは、0.1行ずつスクロール、といったことが普通にありますので、その修正だけではまだスクロールできません。このため、nsEventStateManager::DeltaAccumulatorで、スクロールに利用されなかった端数を記録しておくようにしました。このため、スクロール量が小さい場合でも、ホイールを回し続ければ、トータルでは期待通りのスクロールスピードでスクロールするようになっています。

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

bug-org 422132を含むエントリ