mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Fix for disappearing Apple extras menu items when showing native file choosers.
This commit is contained in:
parent
817837ad48
commit
ec67783251
3 changed files with 25 additions and 5 deletions
|
|
@ -154,6 +154,11 @@ public:
|
|||
the main menu bar.
|
||||
*/
|
||||
static MenuBarModel* getMacMainMenu();
|
||||
|
||||
/** MAC ONLY - Returns the menu that was last passed as the extraAppleMenuItems
|
||||
argument to setMacMainMenu(), or nullptr if none was specified.
|
||||
*/
|
||||
static const PopupMenu* getMacExtraAppleItemsMenu();
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -89,8 +89,12 @@ class TemporaryMainMenuWithStandardCommands
|
|||
{
|
||||
public:
|
||||
TemporaryMainMenuWithStandardCommands()
|
||||
: oldMenu (MenuBarModel::getMacMainMenu())
|
||||
: oldMenu (MenuBarModel::getMacMainMenu()), oldAppleMenu (nullptr)
|
||||
{
|
||||
const PopupMenu* appleMenu = MenuBarModel::getMacExtraAppleItemsMenu();
|
||||
if (appleMenu != nullptr)
|
||||
oldAppleMenu = new PopupMenu (*appleMenu);
|
||||
|
||||
MenuBarModel::setMacMainMenu (nullptr);
|
||||
|
||||
NSMenu* menu = [[NSMenu alloc] initWithTitle: nsStringLiteral ("Edit")];
|
||||
|
|
@ -119,11 +123,12 @@ public:
|
|||
|
||||
~TemporaryMainMenuWithStandardCommands()
|
||||
{
|
||||
MenuBarModel::setMacMainMenu (oldMenu);
|
||||
MenuBarModel::setMacMainMenu (oldMenu, oldAppleMenu);
|
||||
}
|
||||
|
||||
private:
|
||||
MenuBarModel* oldMenu;
|
||||
ScopedPointer<PopupMenu> oldAppleMenu;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public:
|
|||
|
||||
~JuceMainMenuHandler()
|
||||
{
|
||||
setMenu (nullptr);
|
||||
setMenu (nullptr, nullptr);
|
||||
|
||||
jassert (instance == this);
|
||||
instance = nullptr;
|
||||
|
|
@ -46,7 +46,7 @@ public:
|
|||
[callback release];
|
||||
}
|
||||
|
||||
void setMenu (MenuBarModel* const newMenuBarModel)
|
||||
void setMenu (MenuBarModel* const newMenuBarModel, const PopupMenu* newExtraAppleMenuItems)
|
||||
{
|
||||
if (currentModel != newMenuBarModel)
|
||||
{
|
||||
|
|
@ -60,6 +60,9 @@ public:
|
|||
|
||||
menuBarItemsChanged (nullptr);
|
||||
}
|
||||
|
||||
extraAppleMenuItems = newExtraAppleMenuItems != nullptr ? new PopupMenu (*newExtraAppleMenuItems)
|
||||
: nullptr;
|
||||
}
|
||||
|
||||
void addSubMenu (NSMenu* parent, const PopupMenu& child,
|
||||
|
|
@ -262,6 +265,7 @@ public:
|
|||
static JuceMainMenuHandler* instance;
|
||||
|
||||
MenuBarModel* currentModel;
|
||||
ScopedPointer<PopupMenu> extraAppleMenuItems;
|
||||
uint32 lastUpdateTime;
|
||||
NSObject* callback;
|
||||
|
||||
|
|
@ -569,7 +573,7 @@ void MenuBarModel::setMacMainMenu (MenuBarModel* newMenuBarModel,
|
|||
if (JuceMainMenuHandler::instance == nullptr)
|
||||
JuceMainMenuHandler::instance = new JuceMainMenuHandler();
|
||||
|
||||
JuceMainMenuHandler::instance->setMenu (newMenuBarModel);
|
||||
JuceMainMenuHandler::instance->setMenu (newMenuBarModel, extraAppleMenuItems);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -585,6 +589,12 @@ MenuBarModel* MenuBarModel::getMacMainMenu()
|
|||
? JuceMainMenuHandler::instance->currentModel : nullptr;
|
||||
}
|
||||
|
||||
const PopupMenu* MenuBarModel::getMacExtraAppleItemsMenu()
|
||||
{
|
||||
return JuceMainMenuHandler::instance != nullptr
|
||||
? JuceMainMenuHandler::instance->extraAppleMenuItems.get() : nullptr;
|
||||
}
|
||||
|
||||
void juce_initialiseMacMainMenu()
|
||||
{
|
||||
if (JuceMainMenuHandler::instance == nullptr)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue