|
64 | 64 |
|
65 | 65 |
|
66 | 66 | function handler(event) {
|
67 |
| - var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, deltaX = 0, deltaY = 0, absDelta = 0, absDeltaXY = 0; |
| 67 | + var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, deltaX = 0, deltaY = 0, absDelta = 0, absDeltaXY = 0, fn; |
68 | 68 | event = $.event.fix(orgEvent);
|
69 | 69 | event.type = "mousewheel";
|
70 | 70 |
|
|
86 | 86 | if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY; }
|
87 | 87 | if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = orgEvent.wheelDeltaX * -1; }
|
88 | 88 |
|
| 89 | + // Look for lowest delta to normalize the delta values |
89 | 90 | absDelta = Math.abs(delta);
|
90 | 91 | if ( !lowestDelta || absDelta < lowestDelta ) { lowestDelta = absDelta; }
|
91 |
| - |
92 | 92 | absDeltaXY = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
|
93 | 93 | if ( !lowestDeltaXY || absDeltaXY < lowestDeltaXY ) { lowestDeltaXY = absDeltaXY; }
|
94 | 94 |
|
| 95 | + // Get a whole value for the deltas |
| 96 | + fn = delta > 0 ? 'floor' : 'ceil'; |
| 97 | + delta = Math[fn](delta/lowestDelta); |
| 98 | + deltaX = Math[fn](deltaX/lowestDeltaXY); |
| 99 | + deltaY = Math[fn](deltaY/lowestDeltaXY); |
| 100 | + |
95 | 101 | // Add event and delta to the front of the arguments
|
96 |
| - args.unshift(event, Math.floor(delta/lowestDelta), Math.floor(deltaX/lowestDeltaXY), Math.floor(deltaY/lowestDeltaXY)); |
| 102 | + args.unshift(event, delta, deltaX, deltaY); |
97 | 103 |
|
98 | 104 | return ($.event.dispatch || $.event.handle).apply(this, args);
|
99 | 105 | }
|
|
0 commit comments