diff options
author | Piotr Wach <pwach@bloomberg.net> | 2023-12-19 20:57:45 +0000 |
---|---|---|
committer | Piotr Wach <pwach@bloomberg.net> | 2023-12-19 21:14:12 +0000 |
commit | 7244bac0fc51697ed6be6597dee82a26da222c23 (patch) | |
tree | 206c77f8dfded318344d5a752fad77299e235ad6 | |
parent | f3b5d00549be57b5da03f3220057b887372ff254 (diff) |
Use appropriate tree view when listing entries
-rw-r--r-- | src/interactive/app/eventloop.rs | 18 | ||||
-rw-r--r-- | src/interactive/app/tree_view.rs | 9 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs index f394c53..5e1694f 100644 --- a/src/interactive/app/eventloop.rs +++ b/src/interactive/app/eventloop.rs @@ -242,8 +242,13 @@ impl AppState { tree_view.tree_as_mut().add_edge(tree_root, idx, ()); } + let glob_tree_view = GlobTreeView { + traversal: tree_view.traversal_as_mut(), + glob_tree_root: tree_root + }; + let new_entries = - sorted_entries(tree_view.tree(), tree_root, self.sorting, Some(tree_root)); + glob_tree_view.sorted_entries(tree_root, self.sorting); let new_entries = self .navigation_mut() @@ -294,15 +299,16 @@ impl AppState { self.glob_mode = None; window.glob_pane = None; + let normal_tree_view = NormalTreeView { + traversal: tree_view.traversal_as_mut() + }; + let new_entries = self.navigation().selected.map(|previously_selected| { ( previously_selected, - sorted_entries( - tree_view.tree(), + normal_tree_view.sorted_entries( self.navigation().view_root, - self.sorting, - None, - ), + self.sorting), ) }); self.enter_node(new_entries); diff --git a/src/interactive/app/tree_view.rs b/src/interactive/app/tree_view.rs index 3005db6..5718fa9 100644 --- a/src/interactive/app/tree_view.rs +++ b/src/interactive/app/tree_view.rs @@ -6,6 +6,7 @@ use std::path::{Path, PathBuf}; pub trait TreeView { fn traversal(&self) -> &Traversal; + fn traversal_as_mut(&mut self) -> &mut Traversal; fn tree(&self) -> &Tree; fn tree_as_mut(&mut self) -> &mut Tree; @@ -63,6 +64,10 @@ impl<'a> TreeView for NormalTreeView<'a> { self.traversal } + fn traversal_as_mut(&mut self) -> &mut Traversal { + self.traversal + } + fn recompute_sizes_recursively(&mut self, mut index: TreeIndex) { loop { self.traversal @@ -155,6 +160,10 @@ impl<'a> TreeView for GlobTreeView<'a> { self.traversal } + fn traversal_as_mut(&mut self) -> &mut Traversal { + self.traversal + } + fn recompute_sizes_recursively(&mut self, mut index: TreeIndex) { loop { self.traversal |