From 496ac3f1a144bd95651bf84311dd3df6ed992450 Mon Sep 17 00:00:00 2001 From: qkzk Date: Fri, 10 Nov 2023 22:21:23 +0100 Subject: FIX: leaving preview doesn't reset tree --- src/event_exec.rs | 16 +++++----------- src/tab.rs | 6 +++--- src/tree.rs | 7 +++++-- 3 files changed, 13 insertions(+), 16 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3