Fix WheelEvent incorrectly inverting sign of deltaY
Andreas Svensson committed
Jan 1, 2014 at 16:00 UTC
4de2d39f63965e82e88b12a7bc668fea20fbe7dc
2 files changed
+12
-9
src/event/synthetic/SyntheticWheelEvent.js
+10
-7
@@ -27,7 +27,6 @@ var SyntheticMouseEvent = require('SyntheticMouseEvent');
27
*/
28
var WheelEventInterface = {
29
deltaX: function(event) {
30
- // NOTE: IE<9 does not support x-axis delta.
30
return (
31
'deltaX' in event ? event.deltaX :
32
// Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
@@ -36,15 +35,19 @@ var WheelEventInterface = {
35
},
36
deltaY: function(event) {
37
return (
39
- // Normalize (up is positive).
40
- 'deltaY' in event ? -event.deltaY :
41
- // Fallback to `wheelDeltaY` for Webkit.
42
- 'wheelDeltaY' in event ? event.wheelDeltaY :
43
- // Fallback to `wheelDelta` for IE<9.
44
- 'wheelDelta' in event ? event.wheelDelta : 0
38
+ 'deltaY' in event ? event.deltaY :
39
+ // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
40
+ 'wheelDeltaY' in event ? -event.wheelDeltaY :
41
+ // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
42
+ 'wheelDelta' in event ? -event.wheelDelta : 0
43
);
44
},
45
deltaZ: null,
46
+
47
+ // Browsers without "deltaMode" is reporting in raw wheel delta where one
48
+ // notch on the scroll is always +/- 120, roughly equivalent to pixels.
49
+ // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
50
+ // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
51
deltaMode: null
52
};
53
src/event/synthetic/__tests__/SyntheticWheelEvent-test.js
+2
-2
@@ -46,11 +46,11 @@ describe('SyntheticWheelEvent', function() {
46
it('should normalize properties from the WheelEvent interface', function() {
47
var standardEvent = createEvent({deltaX: 10, deltaY: -50});
48
expect(standardEvent.deltaX).toBe(10);
49
- expect(standardEvent.deltaY).toBe(50);
49
+ expect(standardEvent.deltaY).toBe(-50);
50
51
var webkitEvent = createEvent({wheelDeltaX: -10, wheelDeltaY: 50});
52
expect(webkitEvent.deltaX).toBe(10);
53
- expect(webkitEvent.deltaY).toBe(50);
53
+ expect(webkitEvent.deltaY).toBe(-50);
54
});
55
56
it('should be able to `preventDefault` and `stopPropagation`', function() {