Disable item in Mac menu


#1

Is there a way to do this from Juce? I can add menu items to the Mac app menu with SetMacMainMenu(), but I could not see a way to disable or enable those items from Juce? I can dig into the Mac API and do it directly, but thought I’d post this question first in case I missed a way to do it from Juce.


#2

Am not sure about it working on macintosh, but I had used ApplicationCommandTarget for enabling and disabling the menu items on wndows.

You would have to derive a class from ApplicationCommandTarget and over-ride this method.

virtual void ApplicationCommandTarget::getCommandInfo ( const CommandID commandID, ApplicationCommandInfo & result ) ;
[/code]
result.setActive ( false) ; // disables
result.setActive ( true) ; //enable

[code]

If that doesn’t work you can use any of these methods to get the menu item

– itemWithTag:
– itemWithTitle:
– itemAtIndex:

and call setEnabled to enable or disable the menu item

example :

NSMenuItem* Item = [menu itemAtIndex:0];
[Item setEnabled:false]; 

#3

It’s no different to disabling items in the non-native menus.

vishvesh is right about command manager stuff, and the normal Menu::addItem method has an enable parameter too.


#4

I have not tried vishvesh suggestions yet, but setting the enable parameter false in the addItem() method did not seem to work. It is not a big deal, because I really need a way to be able to disable and enable after the item is added and it looks like it won’t be hard following vishvesh’s suggestions.


#5

Hi,
sorry to exhume this old thread but I have exactly the same problem.
I tried both the addItem and addCommandItem methods and it does not disable the item in Mac. I went into the code and the disabled flag in NSMenuItem seems to be correctly set.
But when I click on the menu, the item is enabled.
Does anyone achieve to disable menu item in Mac Main menu?


#6

That sounds very odd! The disable flag certainly works for normal menus… Maybe the OS treats the main one as a special case and simply doesn’t support disabled items…?


#7

Yes, it seems that Mac OS doesn’t allow us to disable an item. But it supports disabled items because the Mac OS “Show All” item is disabled by default.
There must be a trick.
BTW the ticked flag works.

Kevin