git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

commit3776ea0ae81cc2879470ccc4f1292595b8566a55
parenta34a05aa7a
authorLucas Galante <[email protected]>
date2026-05-22 10:22
Close MenuBar submenu when clicking on an already open menu heading

 src/widget.rs | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/widget.rs b/src/widget.rs
index fb54126..36945e3 100644
--- a/src/widget.rs
+++ b/src/widget.rs
@@ -590,7 +590,8 @@ impl Widget for MenuBar {
                     let iy = self.item_y_vertical(i);
                     let ih = self.item_h_vertical();
                     if ly >= iy && ly < iy + ih {
-                        if self.was_open == Some(i) {
+                        if self.was_open == Some(i) || self.open_menu == Some(i) {
+                            self.open_menu = None;
                             self.was_open = None;
                         } else {
                             self.open_menu = Some(i);
@@ -609,7 +610,8 @@ impl Widget for MenuBar {
                 for i in 0..self.menu_items.len() {
                     let ix = menu_item_x(&self.title, &self.menu_items, i);
                     if lx >= ix && lx < ix + menu_item_w(&self.menu_items, i) {
-                        if self.was_open == Some(i) {
+                        if self.was_open == Some(i) || self.open_menu == Some(i) {
+                            self.open_menu = None;
                             self.was_open = None;
                         } else {
                             self.open_menu = Some(i);