diff options
author | alecpl <alec@alec.pl> | 2011-09-15 18:57:35 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2011-09-15 18:57:35 +0000 |
commit | 699a25a822276c12a0aa9253dd6a397c1b09899b (patch) | |
tree | 5b8e0543b8883311dd38d7e97d49b829792c1fd4 /program/js/list.js | |
parent | d43332a8a5d30f135f696fcdca1e7703af23cf6d (diff) |
- Disable message list keypress operations when CTRL key is pressed,
to workaround FF6 issue, where Ctrl+Pg(Up/Down) was changing list page
and browser tab)
- Fix multiselection with Ctrl+Up/Down keys
Diffstat (limited to 'program/js/list.js')
-rw-r--r-- | program/js/list.js | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/program/js/list.js b/program/js/list.js index 874f8f73e..f0e1c9bc1 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -36,7 +36,7 @@ function rcube_list_widget(list, p) this.colcount = 0; this.subject_col = -1; - this.shiftkey = false; + this.modkey = 0; this.multiselect = false; this.multiexpand = false; this.multi_selecting = false; @@ -648,7 +648,7 @@ select_row: function(id, mod_key, with_mouse) case CONTROL_KEY: if (!with_mouse) this.highlight_row(id, true); - break; + break; case CONTROL_SHIFT_KEY: this.shift_select(id, true); @@ -962,7 +962,7 @@ key_press: function(e) switch (keyCode) { case 40: - case 38: + case 38: case 63233: // "down", in safari keypress case 63232: // "up", in safari keypress // Stop propagation so that the browser doesn't scroll @@ -976,7 +976,9 @@ key_press: function(e) rcube_event.cancel(e); var ret = this.use_plusminus_key(keyCode, mod_key); this.key_pressed = keyCode; + this.modkey = mod_key; this.triggerEvent('keypress'); + this.modkey = 0; return ret; case 36: // Home this.select_first(mod_key); @@ -985,11 +987,10 @@ key_press: function(e) this.select_last(mod_key); return rcube_event.cancel(e); default: - this.shiftkey = e.shiftKey; this.key_pressed = keyCode; + this.modkey = mod_key; this.triggerEvent('keypress'); - // reset shiftkey flag, we need it only for registered events - this.shiftkey = false; + this.modkey = 0; if (this.key_pressed == this.BACKSPACE_KEY) return rcube_event.cancel(e); @@ -1044,7 +1045,7 @@ use_arrow_key: function(keyCode, mod_key) new_row = this.get_prev_row(); if (new_row) { - this.select_row(new_row.uid, mod_key, true); + this.select_row(new_row.uid, mod_key, false); this.scrollto(new_row.uid); } |