mirror of
https://github.com/facebook/react.git
synced 2026-02-22 11:51:55 +00:00
Merge pull request #778 from syranide/flipwheel
Fix WheelEvent incorrectly flipping sign of deltaY
This commit is contained in:
@@ -27,7 +27,6 @@ var SyntheticMouseEvent = require('SyntheticMouseEvent');
|
||||
*/
|
||||
var WheelEventInterface = {
|
||||
deltaX: function(event) {
|
||||
// NOTE: IE<9 does not support x-axis delta.
|
||||
return (
|
||||
'deltaX' in event ? event.deltaX :
|
||||
// Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
|
||||
@@ -36,15 +35,19 @@ var WheelEventInterface = {
|
||||
},
|
||||
deltaY: function(event) {
|
||||
return (
|
||||
// Normalize (up is positive).
|
||||
'deltaY' in event ? -event.deltaY :
|
||||
// Fallback to `wheelDeltaY` for Webkit.
|
||||
'wheelDeltaY' in event ? event.wheelDeltaY :
|
||||
// Fallback to `wheelDelta` for IE<9.
|
||||
'wheelDelta' in event ? event.wheelDelta : 0
|
||||
'deltaY' in event ? event.deltaY :
|
||||
// Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
|
||||
'wheelDeltaY' in event ? -event.wheelDeltaY :
|
||||
// Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
|
||||
'wheelDelta' in event ? -event.wheelDelta : 0
|
||||
);
|
||||
},
|
||||
deltaZ: null,
|
||||
|
||||
// Browsers without "deltaMode" is reporting in raw wheel delta where one
|
||||
// notch on the scroll is always +/- 120, roughly equivalent to pixels.
|
||||
// A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
|
||||
// ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
|
||||
deltaMode: null
|
||||
};
|
||||
|
||||
|
||||
@@ -46,11 +46,11 @@ describe('SyntheticWheelEvent', function() {
|
||||
it('should normalize properties from the WheelEvent interface', function() {
|
||||
var standardEvent = createEvent({deltaX: 10, deltaY: -50});
|
||||
expect(standardEvent.deltaX).toBe(10);
|
||||
expect(standardEvent.deltaY).toBe(50);
|
||||
expect(standardEvent.deltaY).toBe(-50);
|
||||
|
||||
var webkitEvent = createEvent({wheelDeltaX: -10, wheelDeltaY: 50});
|
||||
expect(webkitEvent.deltaX).toBe(10);
|
||||
expect(webkitEvent.deltaY).toBe(50);
|
||||
expect(webkitEvent.deltaY).toBe(-50);
|
||||
});
|
||||
|
||||
it('should be able to `preventDefault` and `stopPropagation`', function() {
|
||||
|
||||
Reference in New Issue
Block a user