]> git.parisson.com Git - pdf.js.git/commitdiff
Really fix the keyboard handling
authorJulian Viereck <julian.viereck@gmail.com>
Wed, 11 Apr 2012 22:47:11 +0000 (15:47 -0700)
committerJulian Viereck <julian.viereck@gmail.com>
Thu, 12 Apr 2012 15:21:19 +0000 (08:21 -0700)
web/viewer.js

index 9069ecf6c9bad802ba6b26d822dadf0d488c65dd..211938fbcf4d64d1c171b4396dfa1caf4e5c4f7e 100644 (file)
@@ -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();