Start with all directories collapsed

- Directories now start collapsed by default (vifm-style)
- User must press 'l' to expand directories
- Preserves expanded state during rescan
- Remove unused collect_all_dirs function
This commit is contained in:
Christoffer Martinsson 2025-12-06 12:40:53 +01:00
parent 8104f54887
commit d7c1710482

View File

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