From d7dec9eda716c97cc65faab9dd8d71d391e26a07 Mon Sep 17 00:00:00 2001 From: Ian VanSchooten Date: Wed, 5 Mar 2025 14:36:43 -0500 Subject: [PATCH] Fix registration of hidden menuItem [mac] --- v3/examples/menu/main.go | 6 ++++++ v3/pkg/application/menu_darwin.go | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/v3/examples/menu/main.go b/v3/examples/menu/main.go index 62bcb454b..1809fce0c 100644 --- a/v3/examples/menu/main.go +++ b/v3/examples/menu/main.go @@ -44,6 +44,12 @@ func main() { // Let's make a "Demo" menu myMenu := menu.AddSubmenu("Demo") + // Hidden menu item that can be unhidden + hidden := myMenu.Add("I was hidden").SetHidden(true) + myMenu.Add("Toggle hidden menu").OnClick(func(ctx *application.Context) { + hidden.SetHidden(!hidden.Hidden()) + }) + // Disabled menu item myMenu.Add("Not Enabled").SetEnabled(false) diff --git a/v3/pkg/application/menu_darwin.go b/v3/pkg/application/menu_darwin.go index 1e3fc7197..a17031489 100644 --- a/v3/pkg/application/menu_darwin.go +++ b/v3/pkg/application/menu_darwin.go @@ -84,9 +84,6 @@ func (m *macosMenu) update() { func (m *macosMenu) processMenu(parent unsafe.Pointer, menu *Menu) { for _, item := range menu.items { - if item.hidden { - continue - } switch item.itemType { case submenu: submenu := item.submenu @@ -102,6 +99,9 @@ func (m *macosMenu) processMenu(parent unsafe.Pointer, menu *Menu) { case text, checkbox, radio: menuItem := newMenuItemImpl(item) item.impl = menuItem + if item.hidden { + menuItem.setHidden(true) + } C.addMenuItem(parent, menuItem.nsMenuItem) case separator: C.addMenuSeparator(parent)