diff --git a/crates/egui/src/containers/menu.rs b/crates/egui/src/containers/menu.rs index 1e2cbfa2..c83b5297 100644 --- a/crates/egui/src/containers/menu.rs +++ b/crates/egui/src/containers/menu.rs @@ -446,7 +446,9 @@ impl SubMenu { let is_hovered = hover_pos.is_some_and(|pos| button_rect.contains(pos)); // The clicked handler is there for accessibility (keyboard navigation) - if (!is_any_open && is_hovered) || button_response.clicked() { + let should_open = + ui.is_enabled() && (button_response.clicked() || (is_hovered && !is_any_open)); + if should_open { set_open = Some(true); is_open = true; // Ensure that all other sub menus are closed when we open the menu diff --git a/crates/egui_demo_lib/src/demo/popups.rs b/crates/egui_demo_lib/src/demo/popups.rs index 4574d99e..9998dd59 100644 --- a/crates/egui_demo_lib/src/demo/popups.rs +++ b/crates/egui_demo_lib/src/demo/popups.rs @@ -53,6 +53,9 @@ impl PopupsDemo { ui.close(); } }); + ui.add_enabled_ui(false, |ui| { + ui.menu_button("SubMenus can be disabled", |_| {}); + }); ui.menu_image_text_button( include_image!("../../data/icon.png"), "I have an icon!",