diff --git a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp index ed771668b33..83329ef46c4 100644 --- a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp +++ b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp @@ -402,11 +402,27 @@ void MenuActionContainer::removeMenu(QMenu *menu) m_menu->removeAction(menu->menuAction()); } +static bool menuInMenuBar(const QMenu *menu) +{ + foreach (const QWidget *widget, menu->menuAction()->associatedWidgets()) { + if (qobject_cast(widget)) + return true; + } + return false; +} + bool MenuActionContainer::updateInternal() { if (onAllDisabledBehavior() == Show) return true; +#ifdef Q_OS_MAC + // work around QTBUG-25544 which makes menus in the menu bar stay at their enabled state at startup + // (so menus that are disabled at startup would stay disabled) + if (menuInMenuBar(m_menu)) + return true; +#endif + bool hasitems = false; QList actions = m_menu->actions();