summaryrefslogtreecommitdiff
path: root/program/js
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2010-03-17 16:52:16 +0000
committerthomascube <thomas@roundcube.net>2010-03-17 16:52:16 +0000
commit2ecb7fef5e0e4c716dd771ddef74c5d3d9f7de6c (patch)
treed97a327d1a696845069b3668500d9950903ad9fe /program/js
parent81ab85e5ab9377fd805a91a78388ad9775366a34 (diff)
Also select childs when dragging a thread message
Diffstat (limited to 'program/js')
-rw-r--r--program/js/list.js21
1 files changed, 21 insertions, 0 deletions
diff --git a/program/js/list.js b/program/js/list.js
index 5764afc98..2c539987c 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -1007,6 +1007,27 @@ drag_mouse_move: function(e)
if (!this.draglayer)
this.draglayer = $('<div>').attr('id', 'rcmdraglayer').css({ position:'absolute', display:'none', 'z-index':2000 }).appendTo(document.body);
+
+ // also select childs of (collapsed) threads for dragging
+ var selection = $.merge([], this.selection);
+ var depth, row, uid, r;
+ for (var n=0; n < selection.length; n++) {
+ uid = selection[n];
+ if (this.rows[uid].has_children /*&& !this.rows[uid].expanded*/) {
+ depth = this.rows[uid].depth;
+ row = this.rows[uid].obj.nextSibling;
+ while (row) {
+ if (row.nodeType == 1) {
+ if ((r = this.rows[row.uid])) {
+ if (!r.depth || r.depth <= depth)
+ break;
+ this.select_row(r.uid, CONTROL_KEY);
+ }
+ }
+ row = row.nextSibling;
+ }
+ }
+ }
// get subjects of selected messages
var names = '';