diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/event/event_dispatch.rs | 7 | ||||
-rw-r--r-- | src/modes/edit/leave_mode.rs | 12 | ||||
-rw-r--r-- | src/modes/edit/search.rs | 2 |
3 files changed, 13 insertions, 8 deletions
diff --git a/src/event/event_dispatch.rs b/src/event/event_dispatch.rs index 29aac42..d090191 100644 --- a/src/event/event_dispatch.rs +++ b/src/event/event_dispatch.rs @@ -4,7 +4,9 @@ use tuikit::prelude::{Event, Key, MouseButton}; use crate::app::Status; use crate::config::Bindings; use crate::event::event_exec::EventAction; -use crate::modes::{Display, Edit, InputCompleted, InputSimple, MarkAction, Navigate, Search}; +use crate::modes::{ + Display, Edit, InputCompleted, InputSimple, LeaveMode, MarkAction, Navigate, Search, +}; use super::FmEvents; @@ -84,7 +86,8 @@ impl EventDispatcher { Edit::InputCompleted(input_completed) => { status.menu.input.insert(c); if matches!(input_completed, InputCompleted::Search) { - Self::update_search(status)? + Self::update_search(status)?; + LeaveMode::search(status, false)? } status.menu.input_complete(&mut status.tabs[status.index])?; Ok(()) diff --git a/src/modes/edit/leave_mode.rs b/src/modes/edit/leave_mode.rs index 8759ff8..2c77bde 100644 --- a/src/modes/edit/leave_mode.rs +++ b/src/modes/edit/leave_mode.rs @@ -67,7 +67,7 @@ impl LeaveMode { Edit::Navigate(Navigate::Context) => LeaveMode::context(status, binds), Edit::Navigate(Navigate::RemovableDevices) => LeaveMode::go_to_mount(status), Edit::InputCompleted(InputCompleted::Exec) => LeaveMode::exec(status), - Edit::InputCompleted(InputCompleted::Search) => LeaveMode::search(status), + Edit::InputCompleted(InputCompleted::Search) => LeaveMode::search(status, true), Edit::InputCompleted(InputCompleted::Cd) => LeaveMode::cd(status), Edit::InputCompleted(InputCompleted::Action) => LeaveMode::action(status, binds), // To avoid mistakes, the default answer is No. We do nothing here. @@ -251,7 +251,7 @@ impl LeaveMode { /// ie. If you typed `"jpg"` before, it will move to the first file /// whose filename contains `"jpg"`. /// The current order of files is used. - pub fn search(status: &mut Status) -> Result<()> { + pub fn search(status: &mut Status, should_reset_input: bool) -> Result<()> { let searched = &status.menu.input.string(); if searched.is_empty() { status.current_tab_mut().search = Search::empty(); @@ -261,8 +261,10 @@ impl LeaveMode { status.current_tab_mut().search = Search::empty(); return Ok(()); }; - status.menu.input.reset(); - search.leave(status)?; + if should_reset_input { + status.menu.input.reset(); + } + search.execute_search(status)?; status.current_tab_mut().search = search; Ok(()) } @@ -387,7 +389,7 @@ impl LeaveMode { status.menu.input.reset(); let mut search = status.tabs[status.index].search.clone(); search.reset_paths(); - search.leave(status)?; + search.execute_search(status)?; status.tabs[status.index].search = search; Ok(()) } diff --git a/src/modes/edit/search.rs b/src/modes/edit/search.rs index 675a66a..0b7e993 100644 --- a/src/modes/edit/search.rs +++ b/src/modes/edit/search.rs @@ -62,7 +62,7 @@ impl Search { None } - pub fn leave(&mut self, status: &mut Status) -> Result<()> { + pub fn execute_search(&mut self, status: &mut Status) -> Result<()> { match status.current_tab().display_mode { Display::Tree => { self.tree(&mut status.current_tab_mut().tree); |