From 359b0a092b4dc533c9776bae5ab8fd39ca112320 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 2 May 2012 09:01:06 +0200 Subject: [PATCH] Mac: Build menu stays disabled with Qt 4.8.1 and later Works around QTBUG-25544 Change-Id: I136aaa403f78e9c3903abc013c3267bc3585f54b Reviewed-by: Daniel Teske --- .../coreplugin/actionmanager/actioncontainer.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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();