fix: make explorer filtering explicitly modal

This commit is contained in:
Valdemar Lorenzen
2026-10-08 16:18:16 +02:00
parent 6d7be0c169
commit 5b8e5fbfbf
5 changed files with 72 additions and 78 deletions
+10 -10
View File
@@ -1454,7 +1454,7 @@ impl Editor {
Input::Backspace if picker.view == FileView::List || picker.searching => {
picker.backspace()
}
Input::Char('/') if picker.view == FileView::Tree && !picker.searching => {
Input::Char('i') if picker.view == FileView::Tree && !picker.searching => {
picker.start_search()
}
Input::Char(ch)
@@ -3729,7 +3729,7 @@ mod tests {
let directory = Directory::new();
fs::write(directory.path("keep.txt"), "text").unwrap();
let mut editor = project_editor(&directory);
type_text(&mut editor, " e/keep");
type_text(&mut editor, " eikeep");
editor.handle(Input::Char('\t'));
assert!(!editor.file_picker().unwrap().focused);
fs::write(directory.path("keep new.txt"), "new").unwrap();
@@ -3774,7 +3774,7 @@ mod tests {
let id = editor.buffer_id();
editor.execute(&format!("edit {}", b.display()));
fs::write(&a, b"\xff").unwrap();
type_text(&mut editor, " e/a space 界");
type_text(&mut editor, " eia space 界");
editor.handle(Input::Enter);
assert_eq!(editor.buffer_id(), id);
assert_eq!(editor.buffer_count(), 3);
@@ -3886,7 +3886,7 @@ mod tests {
type_text(&mut editor, " o");
editor.execute("buffers");
assert!(editor.file_picker().is_none());
type_text(&mut editor, " e/file");
type_text(&mut editor, " eifile");
editor.execute("buffers");
assert!(!editor.file_picker().unwrap().focused);
assert_eq!(editor.file_picker().unwrap().query, "file");
@@ -3903,7 +3903,7 @@ mod tests {
editor
.apply(vec![Effect::Replace("a\nb\nc\nd".into())])
.unwrap();
type_text(&mut editor, " e/file");
type_text(&mut editor, " eifile");
editor.handle(Input::Char('\t'));
type_text(&mut editor, "2j");
assert_eq!(editor.cursor().row, 2);
@@ -4081,7 +4081,7 @@ mod tests {
.entries()
.map(|row| row.path.to_owned())
.collect::<Vec<_>>();
type_text(&mut editor, "/deep/");
type_text(&mut editor, "ideep/");
assert!(editor.file_picker().unwrap().searching);
assert_eq!(editor.file_picker().unwrap().query, "deep/");
editor.handle(Input::Ctrl('H'));
@@ -4172,7 +4172,7 @@ mod tests {
assert_eq!(editor.file_picker().unwrap().selected, 1);
editor.handle(Input::Ctrl('j'));
assert_eq!(editor.file_picker().unwrap().selected, 0);
editor.handle(Input::Char('/'));
editor.handle(Input::Char('i'));
assert_eq!(
editor.file_navigation_hint(),
editor.selection_navigation_hint()
@@ -4271,7 +4271,7 @@ mod tests {
let mut editor = project_editor(&directory);
editor.set_file_picker_view("tree").unwrap();
editor.open_file_picker(presentation);
type_text(&mut editor, "/needle.txt");
type_text(&mut editor, "ineedle.txt");
let picker = editor.file_picker().unwrap();
assert_eq!(
picker.entries().nth(picker.selected).unwrap().path,
@@ -4286,7 +4286,7 @@ mod tests {
editor.open_file_picker(presentation);
editor.handle(Input::Ctrl('w'));
editor.open_file_picker(presentation);
type_text(&mut editor, "/module");
type_text(&mut editor, "imodule");
assert!(
editor
.file_picker()
@@ -4332,7 +4332,7 @@ mod tests {
editor.edit_buffer(b.clone(), false).unwrap();
fs::write(&a, b"\xff").unwrap();
editor.open_file_picker(presentation);
type_text(&mut editor, "/same");
type_text(&mut editor, "isame");
let picker = editor.file_picker.as_mut().unwrap();
let labels = picker
.entries()