Aleksander Machniak
2013-04-28 d0f616c6e04560a2f6a90b39b3d1d4391b327c74
program/js/list.js
@@ -3,7 +3,7 @@
 | Roundcube List Widget                                                 |
 |                                                                       |
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2006-2009, The Roundcube Dev Team                       |
 | Copyright (C) 2006-2013, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
@@ -231,7 +231,8 @@
  // Un-focus already focused elements (#1487123, #1487316, #1488600, #1488620)
  $(':focus:not(body)').blur();
  $('iframe').each(function() { this.blur(); });
  // un-focus iframe bodies (#1489058), this doesn't work in Opera and Chrome
  $('iframe').contents().find('body').blur();
  if (e || (e = window.event))
    rcube_event.cancel(e);
@@ -434,6 +435,7 @@
    new_row = new_row.nextSibling;
  }
  this.triggerEvent('listupdate');
  return false;
},
@@ -481,6 +483,7 @@
    new_row = new_row.nextSibling;
  }
  this.triggerEvent('listupdate');
  return false;
},
@@ -523,6 +526,7 @@
    new_row = new_row.nextSibling;
  }
  this.triggerEvent('listupdate');
  return false;
},
@@ -559,6 +563,8 @@
    }
    new_row = new_row.nextSibling;
  }
  this.triggerEvent('listupdate');
  return false;
},
@@ -774,10 +780,16 @@
  if (!this.rows[this.shift_start] || !this.selection.length)
    this.shift_start = id;
  var n, from_rowIndex = this.rows[this.shift_start].obj.rowIndex,
    to_rowIndex = this.rows[id].obj.rowIndex,
    i = ((from_rowIndex < to_rowIndex)? from_rowIndex : to_rowIndex),
    j = ((from_rowIndex > to_rowIndex)? from_rowIndex : to_rowIndex);
  var n, i, j, to_row = this.rows[id],
    from_rowIndex = this.rows[this.shift_start].obj.rowIndex,
    to_rowIndex = to_row.obj.rowIndex;
  if (!to_row.expanded && to_row.has_children)
    if (to_row = this.rows[(this.row_children(id)).pop()])
      to_rowIndex = to_row.obj.rowIndex;
  i = ((from_rowIndex < to_rowIndex) ? from_rowIndex : to_rowIndex),
  j = ((from_rowIndex > to_rowIndex) ? from_rowIndex : to_rowIndex);
  // iterate through the entire message list
  for (n in this.rows) {
@@ -823,7 +835,7 @@
  for (n in this.rows) {
    if (!filter || this.rows[n][filter] == true) {
      this.last_selected = n;
      this.highlight_row(n, true);
      this.highlight_row(n, true, true);
    }
    else {
      $(this.rows[n].obj).removeClass('selected').removeClass('unfocused');
@@ -918,7 +930,7 @@
/**
 * Highlight/unhighlight a row
 */
highlight_row: function(id, multiple)
highlight_row: function(id, multiple, norecur)
{
  if (!this.rows[id])
    return;
@@ -934,7 +946,7 @@
    if (!this.in_selection(id)) { // select row
      this.selection.push(id);
      $(this.rows[id].obj).addClass('selected');
      if (!this.rows[id].expanded)
      if (!norecur && !this.rows[id].expanded)
        this.highlight_children(id, true);
    }
    else { // unselect row
@@ -944,7 +956,7 @@
      this.selection = a_pre.concat(a_post);
      $(this.rows[id].obj).removeClass('selected').removeClass('unfocused');
      if (!this.rows[id].expanded)
      if (!norecur && !this.rows[id].expanded)
        this.highlight_children(id, false);
    }
  }
@@ -962,7 +974,7 @@
  for (i=0; i<len; i++) {
    selected = this.in_selection(children[i]);
    if ((status && !selected) || (!status && selected))
      this.highlight_row(children[i], true);
      this.highlight_row(children[i], true, true);
  }
},
@@ -1138,7 +1150,7 @@
    this.draglayer.html('');
    // get subjects of selected messages
    var c, i, n, subject, obj;
    var i, n, obj;
    for (n=0; n<this.selection.length; n++) {
      // only show 12 lines
      if (n>12) {
@@ -1147,35 +1159,26 @@
      }
      if (obj = this.rows[this.selection[n]].obj) {
        subject = '';
        for (c=0, i=0; i<obj.childNodes.length; i++) {
         if (obj.childNodes[i].nodeName == 'TD') {
        for (i=0; i<obj.childNodes.length; i++) {
          if (obj.childNodes[i].nodeName == 'TD') {
            if (n == 0)
             this.drag_start_pos = $(obj.childNodes[i]).offset();
              this.drag_start_pos = $(obj.childNodes[i]).offset();
           if (this.subject_col < 0 || (this.subject_col >= 0 && this.subject_col == c)) {
             var entry, node, tmp_node, nodes = obj.childNodes[i].childNodes;
             // find text node
             for (m=0; m<nodes.length; m++) {
               if ((tmp_node = obj.childNodes[i].childNodes[m]) && (tmp_node.nodeType==3 || tmp_node.nodeName=='A'))
                 node = tmp_node;
             }
            if (this.subject_col < 0 || (this.subject_col >= 0 && this.subject_col == i)) {
              var subject = $(obj.childNodes[i]).text();
             if (!node)
               break;
              if (!subject)
                break;
              subject = $(node).text();
             // remove leading spaces
              // remove leading spaces
              subject = $.trim(subject);
              // truncate line to 50 characters
              subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject);
              entry = $('<div>').text(subject);
             this.draglayer.append(entry);
              var entry = $('<div>').text(subject);
              this.draglayer.append(entry);
              break;
            }
            c++;
          }
        }
      }
@@ -1232,7 +1235,7 @@
  // remove temp divs
  this.del_dragfix();
  this.triggerEvent('dragend');
  this.triggerEvent('dragend', e);
  return rcube_event.cancel(e);
},
@@ -1345,7 +1348,7 @@
    }
  }
  this.triggerEvent('column_dragend');
  this.triggerEvent('column_dragend', e);
  return rcube_event.cancel(e);
},