Project panel: detect filename editor blur via an editor event

This commit is contained in:
Max Brunsfeld 2023-11-14 13:18:19 -08:00
parent 123faed5b0
commit 606ab74b9f

View file

@ -197,23 +197,20 @@ impl ProjectPanel {
editor::Event::BufferEdited | editor::Event::SelectionsChanged { .. } => { editor::Event::BufferEdited | editor::Event::SelectionsChanged { .. } => {
this.autoscroll(cx); this.autoscroll(cx);
} }
editor::Event::Blurred => {
if this
.edit_state
.as_ref()
.map_or(false, |state| state.processing_filename.is_none())
{
this.edit_state = None;
this.update_visible_entries(None, cx);
}
}
_ => {} _ => {}
}) })
.detach(); .detach();
// cx.observe_focus(&filename_editor, |this, _, is_focused, cx| {
// if !is_focused
// && this
// .edit_state
// .as_ref()
// .map_or(false, |state| state.processing_filename.is_none())
// {
// this.edit_state = None;
// this.update_visible_entries(None, cx);
// }
// })
// .detach();
// cx.observe_global::<FileAssociations, _>(|_, cx| { // cx.observe_global::<FileAssociations, _>(|_, cx| {
// cx.notify(); // cx.notify();
// }) // })
@ -2360,7 +2357,11 @@ mod tests {
cx.executor().run_until_parked(); cx.executor().run_until_parked();
assert_eq!( assert_eq!(
visible_entries_as_strings(&panel, 0..10, cx), visible_entries_as_strings(&panel, 0..10, cx),
&["v src <== selected", " > test"] &[
//
"v src <== selected",
" > test"
]
); );
panel.update(cx, |panel, cx| panel.new_directory(&NewDirectory, cx)); panel.update(cx, |panel, cx| panel.new_directory(&NewDirectory, cx));
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {
@ -2368,7 +2369,12 @@ mod tests {
}); });
assert_eq!( assert_eq!(
visible_entries_as_strings(&panel, 0..10, cx), visible_entries_as_strings(&panel, 0..10, cx),
&["v src", " > [EDITOR: ''] <== selected", " > test"] &[
//
"v src",
" > [EDITOR: ''] <== selected",
" > test"
]
); );
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {
panel panel
@ -2381,7 +2387,11 @@ mod tests {
}); });
assert_eq!( assert_eq!(
visible_entries_as_strings(&panel, 0..10, cx), visible_entries_as_strings(&panel, 0..10, cx),
&["v src", " > test"], &[
//
"v src",
" > test"
],
"File list should be unchanged after failed folder create confirmation" "File list should be unchanged after failed folder create confirmation"
); );
@ -2390,7 +2400,11 @@ mod tests {
cx.executor().run_until_parked(); cx.executor().run_until_parked();
assert_eq!( assert_eq!(
visible_entries_as_strings(&panel, 0..10, cx), visible_entries_as_strings(&panel, 0..10, cx),
&["v src", " > test <== selected"] &[
//
"v src",
" > test <== selected"
]
); );
panel.update(cx, |panel, cx| panel.new_file(&NewFile, cx)); panel.update(cx, |panel, cx| panel.new_file(&NewFile, cx));
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {