summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/event/event_dispatch.rs7
-rw-r--r--src/modes/edit/leave_mode.rs12
-rw-r--r--src/modes/edit/search.rs2
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);