From fd8555746330154509110a38d5077b4587501cbb Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Wed, 26 Jun 2024 21:04:29 +0200 Subject: [PATCH] Close context menus with Escape (#4711) Pressing escape should close any menu or popup --- crates/egui/src/menu.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/egui/src/menu.rs b/crates/egui/src/menu.rs index 591aee4e..4325f07d 100644 --- a/crates/egui/src/menu.rs +++ b/crates/egui/src/menu.rs @@ -271,7 +271,7 @@ impl MenuRootManager { ) -> Option> { if let Some(root) = self.inner.as_mut() { let (menu_response, inner_response) = root.show(button, add_contents); - if MenuResponse::Close == menu_response { + if menu_response.is_close() { self.inner = None; } inner_response @@ -323,7 +323,8 @@ impl MenuRoot { let inner_response = menu_popup(&button.ctx, &self.menu_state, self.id, add_contents); let menu_state = self.menu_state.read(); - if menu_state.response.is_close() { + let escape_pressed = button.ctx.input(|i| i.key_pressed(Key::Escape)); + if menu_state.response.is_close() || escape_pressed { return (MenuResponse::Close, Some(inner_response)); } }