Changeset 119684 in webkit
- Timestamp:
- Jun 6, 2012 10:56:12 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r119683 r119684 1 2012-06-06 Robert Kroeger <rjkroege@chromium.org> 2 3 [Chromium] Re-enable handling of smooth scrolling on Chromium Linux/Windows 4 https://bugs.webkit.org/show_bug.cgi?id=87535 by adding support for 5 m_hasPreciseScrollingDelta on all Chromium platforms and adjusting ScrollAnimator 6 and ScrollAnimatorNone accordingly to let m_hasPreciseScrollingDelta == true 7 force exact (non-animated) scrolling. 8 9 Reviewed by James Robinson. 10 11 Updated WebKit unit tests to validate change. 12 13 * platform/PlatformWheelEvent.h: 14 (WebCore::PlatformWheelEvent::PlatformWheelEvent): Adjusted #ifdefs to 15 make m_hasPreciseScrollingDelta available on all Chromium platforms. 16 (PlatformWheelEvent): 17 * platform/ScrollAnimator.cpp: 18 (WebCore::ScrollAnimator::handleWheelEvent): Default scroll type is set based on 19 m_hasPreciseScrollingDelta value. 20 * platform/ScrollAnimatorNone.cpp: 21 (WebCore::ScrollAnimatorNone::scroll): Scroll precisely when necessary. 22 * platform/ScrollTypes.h: Added additional pixel scrolling subtype. 23 * platform/ScrollableArea.cpp: 24 (WebCore::ScrollableArea::scroll): Updated for additional pixel scroll subtype. 25 1 26 2012-06-06 Michal Mocny <mmocny@google.com> 2 27 -
trunk/Source/WebCore/platform/PlatformWheelEvent.h
r117129 r119684 91 91 , m_granularity(ScrollByPixelWheelEvent) 92 92 , m_directionInvertedFromDevice(false) 93 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))93 #if PLATFORM(MAC) || PLATFORM(CHROMIUM) 94 94 , m_hasPreciseScrollingDeltas(false) 95 #endif 96 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 95 97 , m_phase(PlatformWheelEventPhaseNone) 96 98 , m_momentumPhase(PlatformWheelEventPhaseNone) … … 112 114 , m_granularity(granularity) 113 115 , m_directionInvertedFromDevice(false) 114 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))116 #if PLATFORM(MAC) || PLATFORM(CHROMIUM) 115 117 , m_hasPreciseScrollingDeltas(false) 116 , m_phase(PlatformWheelEventPhaseNone) 118 #endif 119 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 120 , m_phase(PlatformWheelEventPhaseNone) 117 121 , m_momentumPhase(PlatformWheelEventPhaseNone) 118 122 , m_scrollCount(0) … … 156 160 #endif 157 161 162 #if PLATFORM(MAC) || PLATFORM(CHROMIUM) 163 bool hasPreciseScrollingDeltas() const { return m_hasPreciseScrollingDeltas; } 164 #endif 158 165 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 159 166 PlatformWheelEventPhase phase() const { return m_phase; } 160 167 PlatformWheelEventPhase momentumPhase() const { return m_momentumPhase; } 161 bool hasPreciseScrollingDeltas() const { return m_hasPreciseScrollingDeltas; }162 163 168 unsigned scrollCount() const { return m_scrollCount; } 164 169 float unacceleratedScrollingDeltaX() const { return m_unacceleratedScrollingDeltaX; } … … 188 193 PlatformWheelEventGranularity m_granularity; 189 194 bool m_directionInvertedFromDevice; 190 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))195 #if PLATFORM(MAC) || PLATFORM(CHROMIUM) 191 196 bool m_hasPreciseScrollingDeltas; 192 PlatformWheelEventPhase m_phase; 197 #endif 198 #if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN)) 199 PlatformWheelEventPhase m_phase; 193 200 PlatformWheelEventPhase m_momentumPhase; 194 201 unsigned m_scrollCount; -
trunk/Source/WebCore/platform/ScrollAnimator.cpp
r110371 r119684 92 92 bool handled = false; 93 93 94 #if PLATFORM(CHROMIUM) 95 ScrollGranularity granularity = e.hasPreciseScrollingDeltas() ? ScrollByPrecisePixel : ScrollByPixel; 96 #else 97 ScrollGranularity granularity = ScrollByPixel; 98 #endif 99 94 100 IntSize maxForwardScrollDelta = m_scrollableArea->maximumScrollPosition() - m_scrollableArea->scrollPosition(); 95 101 IntSize maxBackwardScrollDelta = m_scrollableArea->scrollPosition() - m_scrollableArea->minimumScrollPosition(); … … 112 118 deltaY = -deltaY; 113 119 } 114 scroll(VerticalScrollbar, ScrollByPixel, verticalScrollbar->pixelStep(), -deltaY);120 scroll(VerticalScrollbar, granularity, verticalScrollbar->pixelStep(), -deltaY); 115 121 } 116 122 … … 122 128 deltaX = -deltaX; 123 129 } 124 scroll(HorizontalScrollbar, ScrollByPixel, horizontalScrollbar->pixelStep(), -deltaX);130 scroll(HorizontalScrollbar, granularity, horizontalScrollbar->pixelStep(), -deltaX); 125 131 } 126 132 } -
trunk/Source/WebCore/platform/ScrollAnimatorNone.cpp
r115347 r119684 435 435 break; 436 436 case ScrollByPixel: 437 #if PLATFORM(CHROMIUM)438 // FIXME: plumb a flag specifying precise deltas.439 return ScrollAnimator::scroll(orientation, granularity, step, multiplier);440 #else441 437 parameters = Parameters(true, 11 * kTickTime, 2 * kTickTime, Cubic, 3 * kTickTime, Cubic, 3 * kTickTime, Quadratic, 1.25); 442 438 break; 443 #endif 439 case ScrollByPrecisePixel: 440 return ScrollAnimator::scroll(orientation, granularity, step, multiplier); 444 441 case ScrollByPixelVelocity: 445 442 // FIXME: Generalize the scroll interface to support a richer set of parameters. -
trunk/Source/WebCore/platform/ScrollTypes.h
r110371 r119684 107 107 ScrollByDocument, 108 108 ScrollByPixel, 109 ScrollByPixelVelocity 109 ScrollByPixelVelocity, 110 ScrollByPrecisePixel 110 111 }; 111 112 -
trunk/Source/WebCore/platform/ScrollableArea.cpp
r112774 r119684 109 109 break; 110 110 case ScrollByPixel: 111 case ScrollByPrecisePixel: 111 112 step = scrollbar->pixelStep(); 112 113 break; -
trunk/Source/WebKit/chromium/ChangeLog
r119683 r119684 1 2012-06-06 Robert Kroeger <rjkroege@chromium.org> 2 3 [Chromium] Re-enable handling of smooth scrolling on Chromium Linux/Windows 4 https://bugs.webkit.org/show_bug.cgi?id=87535 by adding support for precise 5 scrolling deltas on all Chromium platforms. 6 7 Reviewed by James Robinson. 8 9 * src/WebInputEventConversion.cpp: 10 (WebKit::PlatformWheelEventBuilder::PlatformWheelEventBuilder): Create PlatformWheelEvents 11 with m_hasPreciseScrollingDelta flag as required. 12 * tests/ScrollAnimatorNoneTest.cpp: Added new unit test condiiton for precise scrolling. 13 (TEST): 14 1 15 2012-06-06 Michal Mocny <mmocny@google.com> 2 16 -
trunk/Source/WebKit/chromium/src/WebInputEventConversion.cpp
r119356 r119684 124 124 m_modifiers |= PlatformEvent::MetaKey; 125 125 126 m_hasPreciseScrollingDeltas = e.hasPreciseScrollingDeltas; 126 127 #if OS(DARWIN) 127 m_hasPreciseScrollingDeltas = e.hasPreciseScrollingDeltas;128 128 m_phase = static_cast<WebCore::PlatformWheelEventPhase>(e.phase); 129 129 m_momentumPhase = static_cast<WebCore::PlatformWheelEventPhase>(e.momentumPhase); -
trunk/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp
r113947 r119684 111 111 112 112 EXPECT_CALL(scrollableArea, scrollSize(_)).Times(AtLeast(1)).WillRepeatedly(Return(1000)); 113 EXPECT_CALL(scrollableArea, setScrollOffset(_)).Times( 3);113 EXPECT_CALL(scrollableArea, setScrollOffset(_)).Times(4); 114 114 115 115 scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByLine, 100, 1); … … 126 126 127 127 scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByPixel, 4, 25); 128 EXPECT_NE(100, scrollAnimatorNone.currentX()); 129 EXPECT_NE(0, scrollAnimatorNone.currentX()); 130 EXPECT_EQ(0, scrollAnimatorNone.currentY()); 131 scrollAnimatorNone.reset(); 132 133 scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByPrecisePixel, 4, 25); 128 134 EXPECT_EQ(100, scrollAnimatorNone.currentX()); 129 135 EXPECT_NE(0, scrollAnimatorNone.currentX());
Note: See TracChangeset
for help on using the changeset viewer.