diff options
author | thomascube <thomas@roundcube.net> | 2010-03-17 16:52:16 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2010-03-17 16:52:16 +0000 |
commit | 2ecb7fef5e0e4c716dd771ddef74c5d3d9f7de6c (patch) | |
tree | d97a327d1a696845069b3668500d9950903ad9fe /program/js/list.js | |
parent | 81ab85e5ab9377fd805a91a78388ad9775366a34 (diff) |
Also select childs when dragging a thread message
Diffstat (limited to 'program/js/list.js')
-rw-r--r-- | program/js/list.js | 21 |
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 = ''; |