summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorqkzk <qu3nt1n@gmail.com>2023-11-10 22:21:23 +0100
committerqkzk <qu3nt1n@gmail.com>2023-11-10 22:21:23 +0100
commit496ac3f1a144bd95651bf84311dd3df6ed992450 (patch)
treee19149b8717dee70aa07704f0caed6ce5dfc4f97 /src
parentcce328c74e476096cae71fd860900f1c26458743 (diff)
FIX: leaving preview doesn't reset tree
Diffstat (limited to 'src')
-rw-r--r--src/event_exec.rs16
-rw-r--r--src/tab.rs6
-rw-r--r--src/tree.rs7
3 files changed, 13 insertions, 16 deletions
diff --git a/src/event_exec.rs b/src/event_exec.rs
index 4ca457e..95e95e7 100644
--- a/src/event_exec.rs
+++ b/src/event_exec.rs
@@ -238,11 +238,10 @@ impl EventAction {
/// Display the help which can be navigated and displays the configrable
/// binds.
pub fn help(status: &mut Status) -> Result<()> {
- let help = status.help.clone();
- let tab = status.selected();
- tab.set_mode(Mode::Preview);
- tab.preview = Preview::help(&help);
- tab.window.reset(tab.preview.len());
+ status.selected().set_mode(Mode::Preview);
+ status.selected().preview = Preview::help(&status.help);
+ let len = status.selected_non_mut().preview.len();
+ status.selected().window.reset(len);
Ok(())
}
@@ -283,12 +282,7 @@ impl EventAction {
/// Once a quit event is received, we change a flag and break the main loop.
/// It's usefull to reset the cursor before leaving the application.
pub fn quit(tab: &mut Tab) -> Result<()> {
- if let Mode::Tree = tab.mode {
- tab.refresh_view()?;
- tab.set_mode(Mode::Normal)
- } else {
- tab.must_quit = true;
- }
+ tab.must_quit = true;
Ok(())
}
/// Toggle the display of hidden files.
diff --git a/src/tab.rs b/src/tab.rs
index 6bc39e0..fbffc08 100644
--- a/src/tab.rs
+++ b/src/tab.rs
@@ -147,9 +147,9 @@ impl Tab {
self.preview = Preview::empty();
self.completion.reset();
if matches!(self.mode, Mode::Tree) {
- self.tree = Tree::default()
- } else {
self.make_tree(None)?;
+ } else {
+ self.tree = Tree::default()
};
Ok(())
}
@@ -159,10 +159,10 @@ impl Tab {
/// displayed files is reset.
/// The first file is selected.
pub fn refresh_view(&mut self) -> Result<()> {
- self.refresh_params()?;
self.path_content
.reset_files(&self.filter, self.show_hidden, &self.users)?;
self.window.reset(self.path_content.content.len());
+ self.refresh_params()?;
Ok(())
}
diff --git a/src/tree.rs b/src/tree.rs
index a9153b9..c940809 100644
--- a/src/tree.rs
+++ b/src/tree.rs
@@ -117,6 +117,9 @@ pub enum To<'a> {
impl Go for Tree {
/// Select another element from a tree.
fn go(&mut self, to: To) {
+ if self.is_empty() {
+ return;
+ }
match to {
To::Next => self.select_next(),
To::Prev => self.select_prev(),
@@ -260,7 +263,7 @@ impl Tree {
/// Select next sibling or the next sibling of the parent
fn select_next(&mut self) {
if self.is_on_last() {
- self.select_root();
+ self.go(To::Root);
return;
}
@@ -331,7 +334,7 @@ impl Tree {
/// Select previous sibling or the parent
fn select_prev(&mut self) {
if self.is_on_root() {
- self.select_last();
+ self.go(To::Last);
return;
}