diff --git a/web/viewer.js b/web/viewer.js index 9069ecf6c..211938fbc 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -1456,6 +1456,43 @@ window.addEventListener('pagechange', function pagechange(evt) { }, true); window.addEventListener('keydown', function keydown(evt) { + var cmd = 0; + if (evt.ctrlKey) cmd |= 1; + if (evt.altKey) cmd |= 2; + if (evt.shiftKey) cmd |= 4; + if (evt.metaKey) cmd |= 8; + + var handled = false; + + // First, handle the key bindings that are independent whether an input + // control is selected or not. + if (cmd == 1 || cmd == 8) { // either CTRL or META key. + switch (evt.keyCode) { + case 61: // FF/Mac '=' + case 107: // FF '+' and '=' + case 187: // Chrome '+' + PDFView.zoomIn(); + handled = true; + break; + case 109: // FF '-' + case 189: // Chrome '-' + PDFView.zoomOut(); + handled = true; + break; + case 48: // '0' + PDFView.parseScale(kDefaultScale, true); + handled = true; + break; + } + } + + if (handled) { + evt.preventDefault(); + return; + } + + // Some shortcuts should not get handled if a control/input element + // is selected. var curElement = document.activeElement; if (curElement && curElement.tagName == 'INPUT') return; @@ -1466,13 +1503,6 @@ window.addEventListener('keydown', function keydown(evt) { curElement = curElement.parentNode; } - var cmd = 0; - if (evt.ctrlKey) cmd |= 1; - if (evt.altKey) cmd |= 2; - if (evt.shiftKey) cmd |= 4; - if (evt.metaKey) cmd |= 8; - - var handled = false; if (cmd == 0) { // no control key pressed at all. switch (evt.keyCode) { case 37: // left arrow @@ -1489,25 +1519,6 @@ window.addEventListener('keydown', function keydown(evt) { break; } } - else if (cmd == 1 || cmd == 8) { // either CTRL or META key. - switch (evt.keyCode) { - case 61: // FF/Mac '=' - case 107: // FF '+' and '=' - case 187: // Chrome '+' - PDFView.zoomIn(); - handled = true; - break; - case 109: // FF '-' - case 189: // Chrome '-' - PDFView.zoomOut(); - handled = true; - break; - case 48: // '0' - PDFView.parseScale(kDefaultScale, true); - handled = true; - break; - } - } if (handled) { evt.preventDefault();