From 9acb5825e66f694406a52f3757faa6d203998dff Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 20 Dec 2023 13:00:52 -0700 Subject: [PATCH] Compute the query editor placeholder text with a focus handle So we're not beholden to the current focus. --- crates/editor2/src/editor.rs | 7 +++++-- crates/editor2/src/element.rs | 3 ++- crates/search2/src/buffer_search.rs | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/crates/editor2/src/editor.rs b/crates/editor2/src/editor.rs index 58f8e857a9a167219b5e1cdeec5a2bbb1b5b62f9..aa627db2a3baa08764f8d8569c65a9cee638ffed 100644 --- a/crates/editor2/src/editor.rs +++ b/crates/editor2/src/editor.rs @@ -2003,8 +2003,11 @@ impl Editor { placeholder_text: impl Into>, cx: &mut ViewContext, ) { - 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) { diff --git a/crates/editor2/src/element.rs b/crates/editor2/src/element.rs index 8031bc5db60923b2470f723035c4df801cdd164e..9dab9d00aec20e6b4763d56713ec8514174efa1e 100644 --- a/crates/editor2/src/element.rs +++ b/crates/editor2/src/element.rs @@ -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) diff --git a/crates/search2/src/buffer_search.rs b/crates/search2/src/buffer_search.rs index ebaf111e6061c9b9ca032774c9fd1c85f31b552f..f84db72c13f224e7fdcb56f7b78a7f6d193f6370 100644 --- a/crates/search2/src/buffer_search.rs +++ b/crates/search2/src/buffer_search.rs @@ -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::>() }); let next_query_keystrokes = cx - .bindings_for_action(&NextHistoryQuery {}) + .bindings_for_action_in(&NextHistoryQuery {}, &query_focus_handle) .into_iter() .next() .map(|binding| {