From 13614a9a8989df2dfd434e04a0d9ba132ee79244 Mon Sep 17 00:00:00 2001 From: Piotr Wach Date: Sun, 14 Jan 2024 09:07:52 +0000 Subject: Fix updating item count --- src/interactive/app/tree_view.rs | 18 ++++++++++++------ 1 file 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, -- cgit v1.2.3