alecpl
2011-09-15 699a25a822276c12a0aa9253dd6a397c1b09899b
- 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


3 files modified
36 ■■■■ changed files
program/js/app.js 11 ●●●● patch | view | raw | blame | history
program/js/common.js 10 ●●●●● patch | view | raw | blame | history
program/js/list.js 15 ●●●● patch | view | raw | blame | history
program/js/app.js
@@ -86,7 +86,7 @@
    if (over) button_prop.over = over;
    this.buttons[command].push(button_prop);
    if (this.loaded)
      init_button(command, button_prop);
  };
@@ -1522,11 +1522,12 @@
  this.msglist_keypress = function(list)
  {
    if (list.modkey == CONTROL_KEY)
      return;
    if (list.key_pressed == list.ENTER_KEY)
      this.command('show');
    else if (list.key_pressed == list.DELETE_KEY)
      this.command('delete');
    else if (list.key_pressed == list.BACKSPACE_KEY)
    else if (list.key_pressed == list.DELETE_KEY || list.key_pressed == list.BACKSPACE_KEY)
      this.command('delete');
    else if (list.key_pressed == 33)
      this.command('previouspage');
@@ -2496,7 +2497,7 @@
    // if there is a trash mailbox defined and we're not currently in it
    else {
      // if shift was pressed delete it immediately
      if (list && list.shiftkey) {
      if (list && list.modkey == SHIFT_KEY) {
        if (confirm(this.get_label('deletemessagesconfirm')))
          this.permanently_remove_messages();
      }
program/js/common.js
@@ -171,14 +171,12 @@
  var opcode = 0;
  e = e || window.event;
  if (bw.mac && e) {
  if (bw.mac && e)
    opcode += (e.metaKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY);
    return opcode;
  }
  if (e) {
  else if (e)
    opcode += (e.ctrlKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY);
    return opcode;
  }
  return opcode;
},
/**
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);
  }