diff options
-rw-r--r-- | development.md | 2 | ||||
-rw-r--r-- | src/event_exec.rs | 12 | ||||
-rw-r--r-- | src/status.rs | 6 | ||||
-rw-r--r-- | src/tab.rs | 5 |
4 files changed, 16 insertions, 9 deletions
diff --git a/development.md b/development.md index 95e35a9..e531cfc 100644 --- a/development.md +++ b/development.md @@ -611,8 +611,8 @@ New view: Tree ! Toggle with 't', fold with 'z'. Navigate normally. - [x] FIX: scrolling to bottom of tree is bugged - [x] FIX: scrolling starts 1 row to low - [x] FIX: filename in first line + - [x] FIX: can't "open" a folder to redo the tree there - [ ] search can only find the first match - - [ ] can't "open" a folder to redo the tree there - [ ] test everything - [ ] refactor - [ ] document diff --git a/src/event_exec.rs b/src/event_exec.rs index e725009..ffd63fd 100644 --- a/src/event_exec.rs +++ b/src/event_exec.rs @@ -1445,10 +1445,18 @@ impl LeaveMode { status.update_second_pane_for_preview() } - // TODO! enter the tree if it's a directory /// Execute the selected node if it's a file else enter the directory. pub fn tree(status: &mut Status) -> Result<()> { - EventAction::open_file(status) + let path = status.selected_fileinfo()?.path; + let is_dir = path.is_dir(); + if is_dir { + status.selected().set_pathcontent(&path)?; + status.selected().make_tree(None)?; + status.selected().set_mode(Mode::Tree); + Ok(()) + } else { + EventAction::open_file(status) + } } /// Store a password of some kind (sudo or device passphrase). diff --git a/src/status.rs b/src/status.rs index 68e940d..f0b9f01 100644 --- a/src/status.rs +++ b/src/status.rs @@ -20,7 +20,7 @@ use crate::config::Settings; use crate::constant_strings_paths::{NVIM, SS, TUIS_PATH}; use crate::copy_move::{copy_move, CopyMove}; use crate::cryptsetup::{BlockDeviceAction, CryptoDeviceOpener}; -use crate::fileinfo::FileKind; +use crate::fileinfo::{FileInfo, FileKind}; use crate::flagged::Flagged; use crate::iso::IsoDevice; use crate::log_line; @@ -258,6 +258,10 @@ impl Status { &self.tabs[self.index] } + pub fn selected_fileinfo(&self) -> Result<FileInfo> { + self.selected_non_mut().selected() + } + /// Reset the view of every tab. pub fn reset_tabs_view(&mut self) -> Result<()> { for tab in self.tabs.iter_mut() { @@ -665,11 +665,6 @@ impl Tab { Mode::Tree => { self.path_content.update_sort_from_char(c); self.make_tree(Some(self.path_content.sort_kind.clone()))?; - - // self.directory.tree.update_sort_from_char(c); - // self.directory.tree.sort(); - // self.tree_select_root()?; - // self.directory.tree.into_navigable_content(); } _ => (), } |