diff options
author | alecpl <alec@alec.pl> | 2010-11-12 12:57:04 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-11-12 12:57:04 +0000 |
commit | 74cd6cced6290d43a18745d732b7bdf58f02fe3e (patch) | |
tree | 1f31bb07dd287b5b521b4050cfaae717f0e4e510 /program/js | |
parent | 310fc2dfcce751882f589277024a32c5f4c12f65 (diff) |
- Fix handling of special characters when building content of drag layer
Diffstat (limited to 'program/js')
-rw-r--r-- | program/js/list.js | 21 |
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'); } |