Aleksander Machniak
2013-03-13 f41edfb91f377d2bcede8d28662fb1aedf87ce37
Fix draglayer list building, so the element used as the text source can
contain any element, not only A tag or text node, but also e.g. span
1 files modified
23 ■■■■ changed files
program/js/list.js 23 ●●●● patch | view | raw | blame | history
program/js/list.js
@@ -1143,7 +1143,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) {
@@ -1152,37 +1152,26 @@
      }
      if (obj = this.rows[this.selection[n]].obj) {
        subject = '';
        for (c=0, i=0; i<obj.childNodes.length; i++) {
        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();
            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;
                  break;
                }
              }
            if (this.subject_col < 0 || (this.subject_col >= 0 && this.subject_col == i)) {
              var subject = $(obj.childNodes[i]).text();
              if (!node)
              if (!subject)
                break;
              subject = $(node).text();
              // remove leading spaces
              subject = $.trim(subject);
              // truncate line to 50 characters
              subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject);
              entry = $('<div>').text(subject);
              var entry = $('<div>').text(subject);
              this.draglayer.append(entry);
              break;
            }
            c++;
          }
        }
      }