Thomas Bruederli
2013-10-30 8d9dcca2b6fc1117e170195aa4104980e5bfa238
Merge branch 'master' of github.com:roundcube/roundcubemail
2 files modified
88 ■■■■ changed files
program/js/app.js 21 ●●●●● patch | view | raw | blame | history
program/js/list.js 67 ●●●●● patch | view | raw | blame | history
program/js/app.js
@@ -2062,12 +2062,14 @@
    if (name && (frame = this.get_frame_element(name))) {
      if (!show && (win = this.get_frame_window(name))) {
        if (win.stop)
          win.stop();
        else // IE
          win.document.execCommand('Stop');
        if (win.location.href.indexOf(this.env.blankpage) < 0) {
          if (win.stop)
            win.stop();
          else // IE
            win.document.execCommand('Stop');
        win.location.href = this.env.blankpage;
          win.location.href = this.env.blankpage;
        }
      }
      else if (!bw.safari && !bw.konq)
        $(frame)[show ? 'show' : 'hide']();
@@ -3030,9 +3032,12 @@
  // test if purge command is allowed
  this.purge_mailbox_test = function()
  {
    return (this.env.exists && (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox
      || this.env.mailbox.match('^' + RegExp.escape(this.env.trash_mailbox) + RegExp.escape(this.env.delimiter))
      || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter))));
    return (this.env.exists && (
      this.env.mailbox == this.env.trash_mailbox
      || this.env.mailbox == this.env.junk_mailbox
      || this.env.mailbox.indexOf(this.env.trash_mailbox + this.env.delimiter) == 0
      || this.env.mailbox.indexOf(this.env.junk_mailbox + this.env.delimiter) == 0
    ));
  };
program/js/list.js
@@ -55,7 +55,6 @@
  this.column_fixed = null;
  this.last_selected = 0;
  this.shift_start = 0;
  this.in_selection_before = false;
  this.focused = false;
  this.drag_mouse_start = null;
  this.dblclick_time = 500; // default value on MS Windows is 500
@@ -405,20 +404,15 @@
drag_row: function(e, id)
{
  // don't do anything (another action processed before)
  var evtarget = rcube_event.get_target(e),
    tagname = evtarget.tagName.toLowerCase();
  if (evtarget && (tagname == 'input' || tagname == 'img' || (tagname != 'a' && evtarget.onclick)))
  if (!this.is_event_target(e))
    return true;
  // accept right-clicks
  if (rcube_event.get_button(e) == 2)
    return true;
  this.in_selection_before = e && e.istouch || this.in_selection(id) ? id : false;
  // selects currently unselected row
  if (!this.in_selection_before) {
  if (!(e && e.istouch || this.in_selection(id))) {
    var mod_key = rcube_event.get_modifier(e);
    this.select_row(id, mod_key, false);
  }
@@ -446,22 +440,18 @@
 */
click_row: function(e, id)
{
  var now = new Date().getTime(),
    mod_key = rcube_event.get_modifier(e),
    evtarget = rcube_event.get_target(e),
    tagname = evtarget.tagName.toLowerCase();
  if ((evtarget && (tagname == 'input' || tagname == 'img')))
  // don't do anything (another action processed before)
  if (!this.is_event_target(e))
    return true;
  var dblclicked = now - this.rows[id].clicked < this.dblclick_time;
  var now = new Date().getTime(),
    dblclicked = now - this.rows[id].clicked < this.dblclick_time;
  // selects/unselects currently selected row
  if (!this.drag_active && this.in_selection_before == id && !dblclicked)
    this.select_row(id, mod_key, true);
  // selects (or unselects currently selected) row
  if (!this.drag_active && !dblclicked)
    this.select_row(id, rcube_event.get_modifier(e), true);
  this.drag_start = false;
  this.in_selection_before = false;
  // row was double clicked
  if (this.rowcount && dblclicked && this.in_selection(id)) {
@@ -479,6 +469,18 @@
  this.rows[id].clicked = now;
  return false;
},
/**
 * Check target of the current event
 */
is_event_target: function(e)
{
  var target = rcube_event.get_target(e),
    tagname = target.tagName.toLowerCase();
  return !(target && (tagname == 'input' || tagname == 'img' || (tagname != 'a' && target.onclick)));
},
@@ -856,14 +858,8 @@
{
  var row = this.get_first_row();
  if (row) {
    if (mod_key) {
      this.shift_select(row, mod_key);
      this.triggerEvent('select');
      this.scrollto(row);
    }
    else {
      this.select(row);
    }
    this.select_row(row, mod_key, false);
    this.scrollto(row);
  }
},
@@ -875,14 +871,8 @@
{
  var row = this.get_last_row();
  if (row) {
    if (mod_key) {
      this.shift_select(row, mod_key);
      this.triggerEvent('select');
      this.scrollto(row);
    }
    else {
      this.select(row);
    }
    this.select_row(row, mod_key, false);
    this.scrollto(row);
  }
},
@@ -1255,14 +1245,15 @@
      scroll_to = Number(row.offsetTop);
    }
    if(this.fixed_header)
    if (this.fixed_header)
      head_offset = Number(this.thead.offsetHeight);
    // if row is above the frame (or behind header)
    if (scroll_to < Number(this.frame.scrollTop) + head_offset) {
      // scroll window so that row isn't behind header
      this.frame.scrollTop = scroll_to - head_offset;
    } else if (scroll_to + Number(row.offsetHeight) > Number(this.frame.scrollTop) + Number(this.frame.offsetHeight))
    }
    else if (scroll_to + Number(row.offsetHeight) > Number(this.frame.scrollTop) + Number(this.frame.offsetHeight))
      this.frame.scrollTop = (scroll_to + Number(row.offsetHeight)) - Number(this.frame.offsetHeight);
  }
},