@@ -328,7 +328,7 @@ geo.mapInteractor = function (args) {
328328 $node . on ( 'mousemove.geojs' , m_this . _handleMouseMove ) ;
329329 $node . on ( 'mousedown.geojs' , m_this . _handleMouseDown ) ;
330330 $node . on ( 'mouseup.geojs' , m_this . _handleMouseUp ) ;
331- $node . on ( 'mousewheel .geojs' , m_this . _handleMouseWheel ) ;
331+ $node . on ( 'wheel .geojs' , m_this . _handleMouseWheel ) ;
332332 if ( m_options . panMoveButton === 'right' ||
333333 m_options . zoomMoveButton === 'right' ) {
334334 $node . on ( 'contextmenu.geojs' , function ( ) { return false ; } ) ;
@@ -794,8 +794,21 @@ geo.mapInteractor = function (args) {
794794 this . _handleMouseWheel = function ( evt ) {
795795 var zoomFactor , direction ;
796796
797- // In case jquery-mousewheel isn't loaded for some reason
798- evt . deltaFactor = evt . deltaFactor || 1 ;
797+ // try to normalize deltas using the wheel event standard:
798+ // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent
799+ evt . deltaFactor = 1 ;
800+ if ( evt . originalEvent . deltaMode === 1 ) {
801+ // DOM_DELTA_LINE -- estimate line height
802+ evt . deltaFactor = 12 ;
803+ } else if ( evt . originalEvent . deltaMode === 2 ) {
804+ // DOM_DELTA_PAGE -- get window height
805+ evt . deltaFactor = $ ( window ) . height ( ) ;
806+ }
807+
808+ // If the browser doesn't support the standard then
809+ // just set the delta's to zero.
810+ evt . deltaX = evt . originalEvent . deltaX || 0 ;
811+ evt . deltaY = evt . originalEvent . deltaY || 0 ;
799812
800813 m_this . _getMouseModifiers ( evt ) ;
801814 evt . deltaX = evt . deltaX * m_options . wheelScaleX * evt . deltaFactor / 120 ;
@@ -821,13 +834,13 @@ geo.mapInteractor = function (args) {
821834
822835 m_this . map ( ) . pan ( {
823836 x : evt . deltaX ,
824- y : evt . deltaY
837+ y : - evt . deltaY
825838 } ) ;
826839
827840 } else if ( m_options . zoomWheelEnabled &&
828841 eventMatch ( 'wheel' , m_options . zoomWheelModifiers ) ) {
829842
830- zoomFactor = evt . deltaY ;
843+ zoomFactor = - evt . deltaY ;
831844 direction = m_mouse . map ;
832845
833846 m_this . map ( ) . zoom (
@@ -1014,9 +1027,11 @@ geo.mapInteractor = function (args) {
10141027 ctrlKey : options . modifiers . indexOf ( 'ctrl' ) >= 0 ,
10151028 metaKey : options . modifiers . indexOf ( 'meta' ) >= 0 ,
10161029 shiftKey : options . modifiers . indexOf ( 'shift' ) >= 0 ,
1017- deltaX : options . wheelDelta . x ,
1018- deltaY : options . wheelDelta . y ,
1019- deltaFactor : 1
1030+ originalEvent : {
1031+ deltaX : options . wheelDelta . x ,
1032+ deltaY : options . wheelDelta . y ,
1033+ deltaMode : options . wheelMode
1034+ }
10201035 }
10211036 ) ;
10221037 $node . trigger ( evt ) ;
0 commit comments