diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-06 20:43:24 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-06 20:43:24 +0000 |
commit | 1040cb10711a7a19051576eb96f33fc3632088f3 (patch) | |
tree | 5be594c815a19e21dbb004dcca8469e725e1cc36 /webkit/glue/webinputevent_win.cc | |
parent | 53939ea429d84e0a380b37ad15c9e4c0030caae3 (diff) | |
download | chromium_src-1040cb10711a7a19051576eb96f33fc3632088f3.zip chromium_src-1040cb10711a7a19051576eb96f33fc3632088f3.tar.gz chromium_src-1040cb10711a7a19051576eb96f33fc3632088f3.tar.bz2 |
Convert from line scrolling to pixel scrolling. Increase pixel scroll amount on Windows.
See also https://bugs.webkit.org/show_bug.cgi?id=24407 .
BUG=6172
Review URL: http://codereview.chromium.org/40241
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11151 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/webinputevent_win.cc')
-rw-r--r-- | webkit/glue/webinputevent_win.cc | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/webkit/glue/webinputevent_win.cc b/webkit/glue/webinputevent_win.cc index 455ecfc..8c82901 100644 --- a/webkit/glue/webinputevent_win.cc +++ b/webkit/glue/webinputevent_win.cc @@ -195,25 +195,36 @@ WebMouseWheelEvent::WebMouseWheelEvent(HWND hwnd, x = client_point.x; y = client_point.y; - // Convert wheel delta amount to a number of lines/chars to scroll. + // Convert wheel delta amount to a number of pixels to scroll. + // + // How many pixels should we scroll per line? Gecko uses the height of the + // current line, which means scroll distance changes as you go through the + // page or go to different pages. IE 7 is ~50 px/line, although the value + // seems to vary slightly by page and zoom level. Since IE 7 has a smoothing + // algorithm on scrolling, it can get away with slightly larger scroll values + // without feeling jerky. Here we use 100 px per three lines (the default + // scroll amount is three lines per wheel tick). + static const float kScrollbarPixelsPerLine = 100.0f / 3.0f; float scroll_delta = wheel_delta / WHEEL_DELTA; if (horizontal_scroll) { unsigned long scroll_chars = kDefaultScrollCharsPerWheelDelta; SystemParametersInfo(SPI_GETWHEELSCROLLCHARS, 0, &scroll_chars, 0); - scroll_delta *= static_cast<float>(scroll_chars); + // TODO(pkasting): Should probably have a different multiplier + // kScrollbarPixelsPerChar here. + scroll_delta *= static_cast<float>(scroll_chars) * kScrollbarPixelsPerLine; } else { unsigned long scroll_lines = kDefaultScrollLinesPerWheelDelta; SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &scroll_lines, 0); if (scroll_lines == WHEEL_PAGESCROLL) scroll_by_page = true; - if (!scroll_by_page) - scroll_delta *= static_cast<float>(scroll_lines); + if (!scroll_by_page) { + scroll_delta *= + static_cast<float>(scroll_lines) * kScrollbarPixelsPerLine; + } } // Set scroll amount based on above calculations. if (horizontal_scroll) { - // Scrolling up should move left, scrolling down should move right. This is - // opposite Safari, but seems more consistent with vertical scrolling. delta_x = scroll_delta; delta_y = 0; } else { |