diff options
author | thomascube <thomas@roundcube.net> | 2010-03-24 09:47:45 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2010-03-24 09:47:45 +0000 |
commit | 84a3312f0b16fdf02061d8bbdc62228290b0beeb (patch) | |
tree | 6f3ecee69ad3a93cd04a6d632f8bef1c8da956d6 /program/js/list.js | |
parent | 5799531e3f3c14cce79076c99d5bec47bf910907 (diff) |
Only select childs when a message row is collapsed but also do it when deleting a thread
Diffstat (limited to 'program/js/list.js')
-rw-r--r-- | program/js/list.js | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/program/js/list.js b/program/js/list.js index c5267eeb3..614d9c3c7 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -658,6 +658,29 @@ select_first: function() this.select_row(first_row, false, false); }, +/** + * Add all childs of the given row to selection + */ +select_childs: function(uid) +{ + if (!this.rows[uid] || !this.rows[uid].has_children) + return; + + var depth = this.rows[uid].depth; + var 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; + if (!this.in_selection(r.uid)) + this.select_row(r.uid, CONTROL_KEY); + } + } + row = row.nextSibling; + } +}, + /** * Perform selection when shift key is pressed @@ -1013,21 +1036,8 @@ drag_mouse_move: function(e) 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; - if (!this.in_selection(r.uid)) - this.select_row(r.uid, CONTROL_KEY); - } - } - row = row.nextSibling; - } - } + if (this.rows[uid].has_children && !this.rows[uid].expanded) + this.select_childs(uid); } // get subjects of selected messages |