diff options
| author | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2008-08-22 10:37:48 +0000 |
|---|---|---|
| committer | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2008-08-22 10:37:48 +0000 |
| commit | 6b4c5ba57ce73a397d71e8e532dd24fba93e45e0 (patch) | |
| tree | bc185135aa3188c95735a5ca5c766dd4bf78dbb1 /roundcubemail/program/js/list.js | |
| parent | 5f7ed0ff75d4f42e43a7eeff2d5845b2cfd22e7e (diff) | |
Fix keyboard control of the list widgets and prevent Safari from scrolling (#1485279)
git-svn-id: https://svn.roundcube.net/trunk@1674 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/js/list.js')
| -rw-r--r-- | roundcubemail/program/js/list.js | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/roundcubemail/program/js/list.js b/roundcubemail/program/js/list.js index a163f55ba..a83a8af6f 100644 --- a/roundcubemail/program/js/list.js +++ b/roundcubemail/program/js/list.js @@ -86,8 +86,10 @@ init: function() this.frame = this.list.parentNode; // set body events - if (this.keyboard) - rcube_event.add_listener({element:document, event:'keypress', object:this, method:'key_press'}); + if (this.keyboard) { + rcube_event.add_listener({element:document, event:'keyup', object:this, method:'key_press'}); + rcube_event.add_listener({element:document, event:'keydown', object:rcube_event, method:'cancel'}); + } } }, @@ -548,20 +550,20 @@ highlight_row: function(id, multiple) */ key_press: function(e) { - if (this.focused != true) + if (this.focused != true) return true; - var keyCode = document.layers ? e.which : document.all ? event.keyCode : document.getElementById ? e.keyCode : 0; + var keyCode = rcube_event.get_keycode(e); var mod_key = rcube_event.get_modifier(e); switch (keyCode) { case 40: case 38: - case 63233: // "down", in safari keypress - case 63232: // "up", in safari keypress + case 63233: // "down", in safari keypress + case 63232: // "up", in safari keypress + // Stop propagation so that the browser doesn't scroll + rcube_event.cancel(e); return this.use_arrow_key(keyCode, mod_key); - break; - default: this.shiftkey = e.shiftKey; this.key_pressed = keyCode; |
