From 699a25a822276c12a0aa9253dd6a397c1b09899b Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Thu, 15 Sep 2011 14:57:35 -0400 Subject: [PATCH] - 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 --- 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 874f8f7..f0e1c9b 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -36,7 +36,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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); } -- Gitblit v1.9.1