diff --git a/Canvas.js b/Canvas.js index 450b94ee7..a37e2f31e 100644 --- a/Canvas.js +++ b/Canvas.js @@ -768,7 +768,7 @@ function newCanvas () { try { // cross-browser wheel delta var event = window.event || event // old IE support - let delta = Math.max(-1, Math.min(1, event.wheelDelta || -event.detail)) + event.delta = Math.max(-1, Math.min(1, event.wheelDelta || -event.detail)) /* We try first with panels. */ @@ -804,7 +804,7 @@ function newCanvas () { } if (container !== undefined) { - canvas.chartSpace.viewport.onMouseWheel(delta) + canvas.chartSpace.viewport.onMouseWheel(event) return false } diff --git a/ChartsSpace/ViewPort.js b/ChartsSpace/ViewPort.js index 13380cc79..b082bec4f 100644 --- a/ChartsSpace/ViewPort.js +++ b/ChartsSpace/ViewPort.js @@ -175,7 +175,10 @@ function newViewport () { } } - function onMouseWheel (amount) { + function onMouseWheel (event) { + let morePower = 1 + let amount = event.delta + if (event.buttons === 4) { morePower = 2 } // Mouse wheel pressed. /* We adjust the sensitivity for Mac Users */ let isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0 if (isMac) { amount = amount / 5 } @@ -191,29 +194,29 @@ function newViewport () { } console.log(thisObject.zoomLevel, amount) - if (thisObject.zoomTargetLevel + amount > MAX_ZOOM_LEVEL) { + if (thisObject.zoomTargetLevel + amount * morePower > MAX_ZOOM_LEVEL) { return false } - if (thisObject.zoomTargetLevel + amount < MIN_ZOOM_LEVEL) { + if (thisObject.zoomTargetLevel + amount * morePower < MIN_ZOOM_LEVEL) { return false } - thisObject.zoomTargetLevel = thisObject.zoomTargetLevel + amount + thisObject.zoomTargetLevel = thisObject.zoomTargetLevel + amount * morePower ANIMATION_INCREMENT = Math.abs(thisObject.zoomTargetLevel - thisObject.zoomLevel) / ANIMATION_STEPS - let event = { + let newEvent = { newLevel: thisObject.zoomTargetLevel, newPosition: position, type: undefined } if (amount > 0) { - event.type = 'Zoom In' + newEvent.type = 'Zoom In' } else { - event.type = 'Zoom Out' + newEvent.type = 'Zoom Out' } - thisObject.eventHandler.raiseEvent('Zoom Changed', event) + thisObject.eventHandler.raiseEvent('Zoom Changed', newEvent) return true }