Allow context menu to be cancelled after deploying it twice
Nathan Sobo
created
Previously, two right clicks would cause an issue with cancelling the context menu via escape.
Change summary
crates/context_menu/src/context_menu.rs | 4 +++-
crates/gpui/src/app.rs | 4 ++++
2 files changed, 7 insertions(+), 1 deletion(-)
Detailed changes
@@ -169,7 +169,9 @@ impl ContextMenu {
self.items = items.collect();
self.position = position;
self.visible = true;
- self.previously_focused_view_id = cx.focused_view_id(cx.window_id());
+ if !cx.is_self_focused() {
+ self.previously_focused_view_id = cx.focused_view_id(cx.window_id());
+ }
cx.focus_self();
} else {
self.visible = false;
@@ -3255,6 +3255,10 @@ impl<'a, T: View> ViewContext<'a, T> {
self.app.focus(self.window_id, Some(self.view_id));
}
+ pub fn is_self_focused(&self) -> bool {
+ self.app.focused_view_id(self.window_id) == Some(self.view_id)
+ }
+
pub fn blur(&mut self) {
self.app.focus(self.window_id, None);
}