From b4b145507caeb7b2f2d449a47dab5695406bade8 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Tue, 28 Jan 2014 20:52:25 +0100 Subject: [PATCH] Implements mouse wheel behaviour for non-Firefox browsers --- web/viewer.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/web/viewer.js b/web/viewer.js index 90a0e254a..a451dbdb4 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -2049,19 +2049,22 @@ window.addEventListener('pagechange', function pagechange(evt) { document.getElementById('next').disabled = (page >= PDFView.pages.length); }, true); -// Firefox specific event, so that we can prevent browser from zooming -window.addEventListener('DOMMouseScroll', function(evt) { - if (evt.ctrlKey) { - evt.preventDefault(); +function handleMouseWheel(evt) { + var MOUSE_WHEEL_DELTA_FACTOR = 40; + var ticks = (evt.type === 'DOMMouseScroll') ? -evt.detail : + evt.wheelDelta / MOUSE_WHEEL_DELTA_FACTOR; + var direction = (ticks < 0) ? 'zoomOut' : 'zoomIn'; - var ticks = evt.detail; - var direction = (ticks > 0) ? 'zoomOut' : 'zoomIn'; + if (evt.ctrlKey) { // Only zoom the pages, not the entire viewer + evt.preventDefault(); PDFView[direction](Math.abs(ticks)); } else if (PresentationMode.active) { - var FIREFOX_DELTA_FACTOR = -40; - PDFView.mouseScroll(evt.detail * FIREFOX_DELTA_FACTOR); + PDFView.mouseScroll(ticks * MOUSE_WHEEL_DELTA_FACTOR); } -}, false); +} + +window.addEventListener('DOMMouseScroll', handleMouseWheel); +window.addEventListener('mousewheel', handleMouseWheel); window.addEventListener('click', function click(evt) { if (!PresentationMode.active) {