Compute the query editor placeholder text with a focus handle

So we're not beholden to the current focus.
This commit is contained in:
Nathan Sobo 2023-12-20 13:00:52 -07:00
parent 15f16f08d9
commit 9acb5825e6
3 changed files with 10 additions and 5 deletions

View File

@ -2003,8 +2003,11 @@ impl Editor {
placeholder_text: impl Into<Arc<str>>,
cx: &mut ViewContext<Self>,
) {
self.placeholder_text = Some(placeholder_text.into());
cx.notify();
let placeholder_text = Some(placeholder_text.into());
if self.placeholder_text != placeholder_text {
self.placeholder_text = placeholder_text;
cx.notify();
}
}
pub fn set_cursor_shape(&mut self, cursor_shape: CursorShape, cx: &mut ViewContext<Self>) {

View File

@ -1722,11 +1722,12 @@ impl EditorElement {
return Vec::new();
}
// When the editor is empty and unfocused, then show the placeholder.
// Show the placeholder when the editor is empty
if snapshot.is_empty() {
let font_size = self.style.text.font_size.to_pixels(cx.rem_size());
let placeholder_color = cx.theme().styles.colors.text_placeholder;
let placeholder_text = snapshot.placeholder_text();
let placeholder_lines = placeholder_text
.as_ref()
.map_or("", AsRef::as_ref)

View File

@ -113,8 +113,9 @@ impl Render for BufferSearchBar {
}
let supported_options = self.supported_options();
let query_focus_handle = self.query_editor.focus_handle(cx);
let previous_query_keystrokes = cx
.bindings_for_action(&PreviousHistoryQuery {})
.bindings_for_action_in(&PreviousHistoryQuery {}, &query_focus_handle)
.into_iter()
.next()
.map(|binding| {
@ -125,7 +126,7 @@ impl Render for BufferSearchBar {
.collect::<Vec<_>>()
});
let next_query_keystrokes = cx
.bindings_for_action(&NextHistoryQuery {})
.bindings_for_action_in(&NextHistoryQuery {}, &query_focus_handle)
.into_iter()
.next()
.map(|binding| {