Firefox/Projects/AcceleratedScrolling

From MozillaWiki
Jump to: navigation, search

Sprint lead: faaborg
Sprinters: faaborg, margaret, dolske

Summary

After implementing bug 462809, it became clear that we needed to be able to detect if the user already had an acceleration model bug 509651 however, since that isn't in scope for 3.6, we are holding that bug and further investigation for 3.7 and moving forward with simply copying Chrome's behavior bug 513817 for 3.6.

Status

  • Currently the biggest concern is users who encounter double acceleration (bug 509651), we need to also buy some mice that include their own driver with an acceleration model so that we can get a sense of what double acceleration feels like
  • Margaret has an initial implementation of an acceleration-based scroll model working on Windows
  • The two thresholds we are now interested in experimenting with and tweaking are the:
    • rate of acceleration
    • time chunk of events to analyze before processing them
  • Still looking for research and documentation in this general area of UI toolkit design
  • Two patches are up for review that add the functionality described below

Design: Acceleration Model for Scrolling

We're using a timeout function to group mousewheel clicks into separate series, where each series represents a unique scroll gesture. Within each series we increment a counter that keeps track of the number of clicks of the scroll wheel within the series, and we can use this value to determine when to start acceleration and how much acceleration to create.

We're using three integer preferences to modify scroll wheel behavior:

  • mousewheel.withnokey.numlines (default=6)
    • The number of lines the page moves with one click of the scroll wheel.
    • This pref is used to determine a scroll delta before acceleration computations are applied.
  • mousewheel.acceleration.start (default=3)
    • The scroll wheel click number at which acceleration begins to take effect.
  • mousewheel.acceleration.factor (default=10)
    • The multiplicative factor used to scale constant acceleration.

Bugs

Progress

  • bug 462809 - Interpretation of scroll events on Windows and OS X
  • bug 513817 - [target of 3.6] Switch scrolling on Windows to (system pref)*2 for 3.6
  • bug 511023 - Setting up a Rudimentary Mouse Lab
  • bug 509651 - [target of 3.7] Disable Firefox's acceleration based scrolling model if the mouse driver already provides it

Dissent

  • bug 508747 - mousewheel.withnokey.numlines overrides the OS setting
  • bug 508785 - Extremely high speed of mouse-wheel scrolling
  • bug 509189 - The application level mouse wheel scrolling acceleration should be disabled in default settings

Related Links