diff options
author | Piotr Wach <pwach@bloomberg.net> | 2024-01-14 09:07:52 +0000 |
---|---|---|
committer | Piotr Wach <pwach@bloomberg.net> | 2024-01-14 15:01:17 +0000 |
commit | 13614a9a8989df2dfd434e04a0d9ba132ee79244 (patch) | |
tree | 177311e69c86da9f1208b11572db0a060bbb22f2 /src | |
parent | 69f14af5403dd17597cfaabf074bf158beabeda3 (diff) |
Fix updating item count
Diffstat (limited to 'src')
-rw-r--r-- | src/interactive/app/tree_view.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/interactive/app/tree_view.rs b/src/interactive/app/tree_view.rs index 9a85636..6dd3f38 100644 --- a/src/interactive/app/tree_view.rs +++ b/src/interactive/app/tree_view.rs @@ -86,16 +86,22 @@ impl TreeView<'_> { pub fn recompute_sizes_recursively(&mut self, mut index: TreeIndex) { loop { - let size_of_children = self + let (size_of_children, item_count) = self .tree() .neighbors_directed(index, Direction::Outgoing) - .filter_map(|idx| self.tree().node_weight(idx).map(|w| w.size)) - .sum(); - self.traversal + .filter_map(|idx| { + self.tree().node_weight(idx).map(|w| (w.size, w.entry_count.unwrap_or(1))) + }) + .reduce(|a, b| (a.0 + b.0, a.1 + b.1)) + .unwrap_or_default(); + + let node = self.traversal .tree .node_weight_mut(index) - .expect("valid index") - .size = size_of_children; + .expect("valid index"); + + node.size = size_of_children; + node.entry_count = Some(item_count); match self.fs_parent_of(index) { None => break, |