Change summary
crates/feedback/src/feedback_editor.rs | 52 ++++++++++++++++++++++++++++
crates/zed/src/zed.rs | 4 +
2 files changed, 55 insertions(+), 1 deletion(-)
Detailed changes
@@ -509,3 +509,55 @@ impl ToolbarItemView for SubmitFeedbackButton {
}
}
}
+
+pub struct FeedbackInfoText {
+ active_item: Option<ViewHandle<FeedbackEditor>>,
+}
+
+impl FeedbackInfoText {
+ pub fn new() -> Self {
+ Self {
+ active_item: Default::default(),
+ }
+ }
+}
+
+impl Entity for FeedbackInfoText {
+ type Event = ();
+}
+
+impl View for FeedbackInfoText {
+ fn ui_name() -> &'static str {
+ "FeedbackInfoText"
+ }
+
+ fn render(&mut self, cx: &mut RenderContext<Self>) -> ElementBox {
+ let theme = cx.global::<Settings>().theme.clone();
+ Label::new(
+ "We read whatever you submit here. For issues and discussions, visit the community repo on GitHub.".to_string(),
+ theme.workspace.titlebar.outdated_warning.text.clone(),
+ )
+ .contained()
+ .with_style(theme.workspace.titlebar.outdated_warning.container)
+ .aligned()
+ .boxed()
+ }
+}
+
+impl ToolbarItemView for FeedbackInfoText {
+ fn set_active_pane_item(
+ &mut self,
+ active_pane_item: Option<&dyn ItemHandle>,
+ cx: &mut ViewContext<Self>,
+ ) -> workspace::ToolbarItemLocation {
+ cx.notify();
+ if let Some(feedback_editor) = active_pane_item.and_then(|i| i.downcast::<FeedbackEditor>())
+ {
+ self.active_item = Some(feedback_editor);
+ ToolbarItemLocation::PrimaryLeft { flex: None }
+ } else {
+ self.active_item = None;
+ ToolbarItemLocation::Hidden
+ }
+ }
+}
@@ -11,7 +11,7 @@ use collections::VecDeque;
pub use editor;
use editor::{Editor, MultiBuffer};
-use feedback::feedback_editor::SubmitFeedbackButton;
+use feedback::feedback_editor::{FeedbackInfoText, SubmitFeedbackButton};
use futures::StreamExt;
use gpui::{
actions,
@@ -290,6 +290,8 @@ pub fn initialize_workspace(
toolbar.add_item(project_search_bar, cx);
let submit_feedback_button = cx.add_view(|_| SubmitFeedbackButton::new());
toolbar.add_item(submit_feedback_button, cx);
+ let feedback_info_text = cx.add_view(|_| FeedbackInfoText::new());
+ toolbar.add_item(feedback_info_text, cx);
})
});
}