diff options
author | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2019-04-03 22:20:48 +0300 |
---|---|---|
committer | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2019-06-10 19:40:42 +0300 |
commit | ba6c25982009f9e9e1e73664abbddaabe1642c08 (patch) | |
tree | e231af451d6d51d7249faff6cec62fdae38423c0 | |
parent | db6e83b7558e68ef09515da7fe0b2560714f745a (diff) |
melib: fix duplication of thread nodes in update envelope event
-rw-r--r-- | melib/src/mailbox/thread.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/melib/src/mailbox/thread.rs b/melib/src/mailbox/thread.rs index 8e86b842..ee902519 100644 --- a/melib/src/mailbox/thread.rs +++ b/melib/src/mailbox/thread.rs @@ -1020,11 +1020,15 @@ impl Threads { tree = &mut temp_tree[new_id].children; } } - /* Add new child */ - let tree_node = ThreadTree::new(id); - tree.push(tree_node); - let new_id = tree.len() - 1; - node_build(&mut tree[new_id], id, &mut self.thread_nodes, 1, collection); + let pos = if let Some(pos) = tree.iter().position(|v| v.id == id) { + pos + } else { + /* Add new child */ + let tree_node = ThreadTree::new(id); + tree.push(tree_node); + tree.len() - 1 + }; + node_build(&mut tree[pos], id, &mut self.thread_nodes, 1, collection); } // FIXME: use insertion according to self.sort etc instead of sorting everytime self.inner_sort_by(*self.sort.borrow(), collection); |