summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-11-12 12:57:04 +0000
committeralecpl <alec@alec.pl>2010-11-12 12:57:04 +0000
commit74cd6cced6290d43a18745d732b7bdf58f02fe3e (patch)
tree1f31bb07dd287b5b521b4050cfaae717f0e4e510
parent310fc2dfcce751882f589277024a32c5f4c12f65 (diff)
- Fix handling of special characters when building content of drag layer
-rw-r--r--program/js/list.js21
1 files changed, 12 insertions, 9 deletions
diff --git a/program/js/list.js b/program/js/list.js
index 2b4961235..029f0cd20 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -1118,13 +1118,15 @@ drag_mouse_move: function(e)
this.select_childs(uid);
}
+ // reset content
+ this.draglayer.html('');
+
// get subjects of selected messages
- var names = '';
- var c, i, subject, obj;
- for (var n=0; n<this.selection.length; n++) {
+ var c, i, n, subject, obj;
+ for (n=0; n<this.selection.length; n++) {
// only show 12 lines
if (n>12) {
- names += '...';
+ this.draglayer.append('...');
break;
}
@@ -1137,7 +1139,7 @@ drag_mouse_move: function(e)
this.drag_start_pos = $(obj.childNodes[i]).offset();
if (this.subject_col < 0 || (this.subject_col >= 0 && this.subject_col == c)) {
- var node, tmp_node, nodes = obj.childNodes[i].childNodes;
+ 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'))
@@ -1147,11 +1149,14 @@ drag_mouse_move: function(e)
if (!node)
break;
- subject = node.nodeType==3 ? node.data : node.innerHTML;
+ subject = $(node).text();
// remove leading spaces
subject = subject.replace(/^\s+/i, '');
// truncate line to 50 characters
- names += (subject.length > 50 ? subject.substring(0, 50)+'...' : subject) + '<br />';
+ subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject);
+
+ entry = $('<div>').text(subject);
+ this.draglayer.append(entry);
break;
}
c++;
@@ -1160,9 +1165,7 @@ drag_mouse_move: function(e)
}
}
- this.draglayer.html(names);
this.draglayer.show();
-
this.drag_active = true;
this.triggerEvent('dragstart');
}