Fix bug preventing spaces from being used in filename (zed2)

Co-Authored-By: Mikayla Maki <mikayla.c.maki@gmail.com>
This commit is contained in:
Joseph T. Lyons 2023-11-30 14:24:00 -05:00
parent 1a1451a943
commit f922ad9f7f

View File

@ -10,9 +10,9 @@ use anyhow::{anyhow, Result};
use gpui::{ use gpui::{
actions, div, overlay, px, uniform_list, Action, AppContext, AssetSource, AsyncWindowContext, actions, div, overlay, px, uniform_list, Action, AppContext, AssetSource, AsyncWindowContext,
ClipboardItem, DismissEvent, Div, EventEmitter, FocusHandle, Focusable, FocusableView, ClipboardItem, DismissEvent, Div, EventEmitter, FocusHandle, Focusable, FocusableView,
InteractiveElement, Model, MouseButton, MouseDownEvent, ParentElement, Pixels, Point, InteractiveElement, KeyContext, Model, MouseButton, MouseDownEvent, ParentElement, Pixels,
PromptLevel, Render, Stateful, Styled, Subscription, Task, UniformListScrollHandle, View, Point, PromptLevel, Render, Stateful, Styled, Subscription, Task, UniformListScrollHandle,
ViewContext, VisualContext as _, WeakView, WindowContext, View, ViewContext, VisualContext as _, WeakView, WindowContext,
}; };
use menu::{Confirm, SelectNext, SelectPrev}; use menu::{Confirm, SelectNext, SelectPrev};
use project::{ use project::{
@ -1355,7 +1355,7 @@ impl ProjectPanel {
details: EntryDetails, details: EntryDetails,
// dragged_entry_destination: &mut Option<Arc<Path>>, // dragged_entry_destination: &mut Option<Arc<Path>>,
cx: &mut ViewContext<Self>, cx: &mut ViewContext<Self>,
) -> ListItem { ) -> Div {
let kind = details.kind; let kind = details.kind;
let settings = ProjectPanelSettings::get_global(cx); let settings = ProjectPanelSettings::get_global(cx);
let show_editor = details.is_editing && !details.is_processing; let show_editor = details.is_editing && !details.is_processing;
@ -1374,44 +1374,46 @@ impl ProjectPanel {
}) })
.unwrap_or(theme.status().info); .unwrap_or(theme.status().info);
ListItem::new(entry_id.to_proto() as usize) div().key_context(self.dispatch_context(cx)).child(
.indent_level(details.depth) ListItem::new(entry_id.to_proto() as usize)
.indent_step_size(px(settings.indent_size)) .indent_level(details.depth)
.selected(is_selected) .indent_step_size(px(settings.indent_size))
.child(if let Some(icon) = &details.icon { .selected(is_selected)
div().child(IconElement::from_path(icon.to_string())) .child(if let Some(icon) = &details.icon {
} else { div().child(IconElement::from_path(icon.to_string()))
div()
})
.child(
if let (Some(editor), true) = (Some(&self.filename_editor), show_editor) {
div().h_full().w_full().child(editor.clone())
} else { } else {
div() div()
.text_color(filename_text_color) })
.child(Label::new(details.filename.clone())) .child(
} if let (Some(editor), true) = (Some(&self.filename_editor), show_editor) {
.ml_1(), div().h_full().w_full().child(editor.clone())
)
.on_click(cx.listener(move |this, event: &gpui::ClickEvent, cx| {
if event.down.button == MouseButton::Right {
return;
}
if !show_editor {
if kind.is_dir() {
this.toggle_expanded(entry_id, cx);
} else { } else {
if event.down.modifiers.command { div()
this.split_entry(entry_id, cx); .text_color(filename_text_color)
.child(Label::new(details.filename.clone()))
}
.ml_1(),
)
.on_click(cx.listener(move |this, event: &gpui::ClickEvent, cx| {
if event.down.button == MouseButton::Right {
return;
}
if !show_editor {
if kind.is_dir() {
this.toggle_expanded(entry_id, cx);
} else { } else {
this.open_entry(entry_id, event.up.click_count > 1, cx); if event.down.modifiers.command {
this.split_entry(entry_id, cx);
} else {
this.open_entry(entry_id, event.up.click_count > 1, cx);
}
} }
} }
} }))
})) .on_secondary_mouse_down(cx.listener(move |this, event: &MouseDownEvent, cx| {
.on_secondary_mouse_down(cx.listener(move |this, event: &MouseDownEvent, cx| { this.deploy_context_menu(event.position, entry_id, cx);
this.deploy_context_menu(event.position, entry_id, cx); })),
})) )
// .on_drop::<ProjectEntryId>(|this, event, cx| { // .on_drop::<ProjectEntryId>(|this, event, cx| {
// this.move_entry( // this.move_entry(
// *dragged_entry, // *dragged_entry,
@ -1421,6 +1423,22 @@ impl ProjectPanel {
// ); // );
// }) // })
} }
fn dispatch_context(&self, cx: &ViewContext<Self>) -> KeyContext {
let mut dispatch_context = KeyContext::default();
dispatch_context.add("menu");
dispatch_context.add("not_editing");
let identifier = if self.filename_editor.focus_handle(cx).is_focused(cx) {
"editing"
} else {
"not_editing"
};
dispatch_context.add(identifier);
dispatch_context
}
} }
impl Render for ProjectPanel { impl Render for ProjectPanel {
@ -3011,21 +3029,3 @@ mod tests {
.unwrap(); .unwrap();
} }
} }
// TODO - implement this in the new keymap system
// fn update_keymap_context(&self, keymap: &mut KeymapContext, cx: &AppContext) {
// Self::reset_to_default_keymap_context(keymap);
// keymap.add_identifier("menu");
// if let Some(window) = cx.active_window() {
// window.read_with(cx, |cx| {
// let identifier = if self.filename_editor.is_focused(cx) {
// "editing"
// } else {
// "not_editing"
// };
// keymap.add_identifier(identifier);
// });
// }
// }