summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--development.md2
-rw-r--r--src/event_exec.rs12
-rw-r--r--src/status.rs6
-rw-r--r--src/tab.rs5
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() {
diff --git a/src/tab.rs b/src/tab.rs
index bf4ed69..400cd85 100644
--- a/src/tab.rs
+++ b/src/tab.rs
@@ -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();
}
_ => (),
}