diff --git a/src/state/mod.rs b/src/state/mod.rs index 752673c..5aaf646 100644 --- a/src/state/mod.rs +++ b/src/state/mod.rs @@ -34,9 +34,8 @@ pub struct FlattenedItem { impl AppState { pub fn new(cache: Cache, config: Config) -> Self { - let mut expanded_dirs = HashSet::new(); - // Start with all directories expanded - collect_all_dirs(&cache.file_tree, &mut expanded_dirs); + // Start with all directories collapsed (vifm-style) + let expanded_dirs = HashSet::new(); let flattened_items = flatten_tree(&cache.file_tree, 0, &expanded_dirs); @@ -107,8 +106,7 @@ impl AppState { } pub fn refresh_flattened_items(&mut self) { - self.expanded_dirs.clear(); - collect_all_dirs(&self.cache.file_tree, &mut self.expanded_dirs); + // Keep current expanded state after rescan self.rebuild_flattened_items(); } @@ -139,12 +137,3 @@ fn flatten_tree(nodes: &[FileTreeNode], depth: usize, expanded_dirs: &HashSet) { - for node in nodes { - if node.is_dir { - dirs.insert(node.path.clone()); - collect_all_dirs(&node.children, dirs); - } - } -}