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)