summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Wach <pwach@bloomberg.net>2024-01-14 09:07:52 +0000
committerPiotr Wach <pwach@bloomberg.net>2024-01-14 15:01:17 +0000
commit13614a9a8989df2dfd434e04a0d9ba132ee79244 (patch)
tree177311e69c86da9f1208b11572db0a060bbb22f2
parent69f14af5403dd17597cfaabf074bf158beabeda3 (diff)
Fix updating item count
-rw-r--r--src/interactive/app/tree_view.rs18
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,