Bug-org 422132 font size 0px on div with scrollbars disables mouse wheel scrolling
初回投稿日時: 2012年08月16日13時23分28秒
カテゴリ: Mozilla Core Mozilla17 バグ修正
SNS:
Tweet (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
で、スクロールに利用されなかった端数を記録しておくようにしました。このため、スクロール量が小さい場合でも、ホイールを回し続ければ、トータルでは期待通りのスクロールスピードでスクロールするようになっています。