melib: fix duplication of thread nodes in update envelope event

embed
Manos Pitsidianakis 2019-04-03 22:20:48 +03:00
parent db6e83b755
commit ba6c259820
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
1 changed files with 9 additions and 5 deletions

View File

@ -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);