#2961 Check if action is available before adding to menu

This commit is contained in:
Magne Sjaastad 2018-05-24 14:58:57 +02:00
parent c5e5f81e88
commit 992e4bff57

View File

@ -1296,6 +1296,23 @@ RiuProcessMonitor* RiuMainWindow::processMonitor()
return m_processMonitor; return m_processMonitor;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void appendToggleActionForDockingWidget(QMenu* menu, QWidget* parent, const QString& dockWidgetName)
{
if (menu)
{
auto dwt = RiuDockWidgetTools::instance();
QAction* action = dwt->toggleActionForWidget(parent, dockWidgetName);
if (action)
{
// Some dock windows are depending on configuration (mohrs circle plot), so do not assert they exist
menu->addAction(action);
}
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -1307,18 +1324,18 @@ void RiuMainWindow::slotBuildWindowActions()
auto dwt = RiuDockWidgetTools::instance(); auto dwt = RiuDockWidgetTools::instance();
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->projectTreeName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->projectTreeName());
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->propertyEditorName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->propertyEditorName());
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->messagesName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->messagesName());
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->processMonitorName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->processMonitorName());
m_windowMenu->addSeparator(); m_windowMenu->addSeparator();
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->resultInfoName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->resultInfoName());
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->resultPlotName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->resultPlotName());
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->relPermPlotName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->relPermPlotName());
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->pvtPlotName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->pvtPlotName());
m_windowMenu->addAction(dwt->toggleActionForWidget(this, dwt->mohrsCirclePlotName())); appendToggleActionForDockingWidget(m_windowMenu, this, dwt->mohrsCirclePlotName());
m_windowMenu->addSeparator(); m_windowMenu->addSeparator();
QAction* cascadeWindowsAction = new QAction("Cascade Windows", this); QAction* cascadeWindowsAction = new QAction("Cascade Windows", this);