Don't render tooltip keystroke label if there's no focused view

Co-authored-by: Antonio Scandurra <antonio@zed.dev>
This commit is contained in:
Nathan Sobo 2023-02-10 07:57:01 -07:00
parent 7de04abdcb
commit da5a6a8b4f

View file

@ -61,7 +61,7 @@ impl Tooltip {
) -> Self { ) -> Self {
struct ElementState<Tag>(Tag); struct ElementState<Tag>(Tag);
struct MouseEventHandlerState<Tag>(Tag); struct MouseEventHandlerState<Tag>(Tag);
let focused_view_id = cx.focused_view_id(cx.window_id).unwrap(); let focused_view_id = cx.focused_view_id(cx.window_id);
let state_handle = cx.default_element_state::<ElementState<Tag>, Rc<TooltipState>>(id); let state_handle = cx.default_element_state::<ElementState<Tag>, Rc<TooltipState>>(id);
let state = state_handle.read(cx).clone(); let state = state_handle.read(cx).clone();
@ -132,7 +132,7 @@ impl Tooltip {
pub fn render_tooltip( pub fn render_tooltip(
window_id: usize, window_id: usize,
focused_view_id: usize, focused_view_id: Option<usize>,
text: String, text: String,
style: TooltipStyle, style: TooltipStyle,
action: Option<Box<dyn Action>>, action: Option<Box<dyn Action>>,
@ -149,18 +149,18 @@ impl Tooltip {
text.flex(1., false).aligned().boxed() text.flex(1., false).aligned().boxed()
} }
}) })
.with_children(action.map(|action| { .with_children(action.and_then(|action| {
let keystroke_label = KeystrokeLabel::new( let keystroke_label = KeystrokeLabel::new(
window_id, window_id,
focused_view_id, focused_view_id?,
action, action,
style.keystroke.container, style.keystroke.container,
style.keystroke.text, style.keystroke.text,
); );
if measure { if measure {
keystroke_label.boxed() Some(keystroke_label.boxed())
} else { } else {
keystroke_label.aligned().boxed() Some(keystroke_label.aligned().boxed())
} }
})) }))
.contained() .contained()