Aleksander Machniak
2012-11-20 17a8fb353bd5141db990dfa467c8fc2634f8de58
Fix keybord events on messages list in opera browser (#1488823)
2 files modified
50 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/js/list.js 49 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix keybord events on messages list in opera browser (#1488823)
- Fix selection of collapsed thread rows (#1488772)
- Always save drafts with format=flowed in order to keep original line wraps (#1488799)
- Fix wrapping of quoted text with format=flowed (#1488177)
program/js/list.js
@@ -88,10 +88,8 @@
    this.frame = this.list.parentNode;
    // set body events
    if (this.keyboard) {
      rcube_event.add_listener({event:bw.opera?'keypress':'keydown', object:this, method:'key_press'});
      rcube_event.add_listener({event:'keydown', object:this, method:'key_down'});
    }
    if (this.keyboard)
      rcube_event.add_listener({event:'keydown', object:this, method:'key_press'});
  }
},
@@ -1007,6 +1005,14 @@
    case 35: // End
      this.select_last(mod_key);
      return rcube_event.cancel(e);
    case 27:
      if (this.drag_active)
        return this.drag_mouse_up(e);
      if (this.col_drag_active) {
        this.selected_column = null;
        return this.column_drag_mouse_up(e);
      }
      return rcube_event.cancel(e);
    default:
      this.key_pressed = keyCode;
      this.modkey = mod_key;
@@ -1015,41 +1021,6 @@
      if (this.key_pressed == this.BACKSPACE_KEY)
        return rcube_event.cancel(e);
  }
  return true;
},
/**
 * Handler for keydown events
 */
key_down: function(e)
{
  var target = e.target || {};
  if (this.focused != true || target.nodeName == 'INPUT' || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT')
    return true;
  switch (rcube_event.get_keycode(e)) {
    case 27:
      if (this.drag_active)
      return this.drag_mouse_up(e);
      if (this.col_drag_active) {
        this.selected_column = null;
        return this.column_drag_mouse_up(e);
      }
    case 40:
    case 38:
    case 63233:
    case 63232:
    case 61:
    case 107:
    case 109:
    case 32:
      if (!rcube_event.get_modifier(e) && this.focused)
        return rcube_event.cancel(e);
    default:
  }
  return true;