diff options
Diffstat (limited to 'program')
-rw-r--r-- | program/js/list.js | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/program/js/list.js b/program/js/list.js index bdcf87932..a163f55ba 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -87,7 +87,7 @@ init: function() // set body events if (this.keyboard) - rcube_event.add_listener({element:document, event:'keydown', object:this, method:'key_press'}); + rcube_event.add_listener({element:document, event:'keypress', object:this, method:'key_press'}); } }, @@ -557,6 +557,8 @@ key_press: function(e) { case 40: case 38: + case 63233: // "down", in safari keypress + case 63232: // "up", in safari keypress return this.use_arrow_key(keyCode, mod_key); break; @@ -576,9 +578,11 @@ key_press: function(e) use_arrow_key: function(keyCode, mod_key) { var new_row; - if (keyCode == 40) // down arrow key pressed + // Safari uses the nonstandard keycodes 63232/63233 for up/down, if we're + // using the keypress event (but not the keydown or keyup event). + if (keyCode == 40 || keyCode == 63233) // down arrow key pressed new_row = this.get_next_row(); - else if (keyCode == 38) // up arrow key pressed + else if (keyCode == 38 || keyCode == 63232) // up arrow key pressed new_row = this.get_prev_row(); if (new_row) |