diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 9516ac92c4..6fae363352 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -45,6 +45,7 @@ #include #include "cafCmdFeature.h" + CAF_PDM_SOURCE_INIT(RimProject, "ResInsightProject"); //-------------------------------------------------------------------------------------------------- /// @@ -529,13 +530,13 @@ void RimProject::computeUtmAreaOfInterest() #include "RimGeoMechView.h" #include "RimEclipseCellColors.h" #include "RimEclipseFaultColors.h" - +#include //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimProject::actionsBasedOnSelection(std::vector& actions) +void RimProject::actionsBasedOnSelection(QMenu& contextMenu) { QStringList commandIds; @@ -613,7 +614,7 @@ void RimProject::actionsBasedOnSelection(std::vector& actions) commandIds << "RicRangeFilterNewSliceI"; commandIds << "RicRangeFilterNewSliceJ"; commandIds << "RicRangeFilterNewSliceK"; - + commandIds << "Separator"; commandIds << "RicDeleteItemFeature"; } else if (dynamic_cast(uiItem)) @@ -623,7 +624,7 @@ void RimProject::actionsBasedOnSelection(std::vector& actions) else if (dynamic_cast(uiItem)) { commandIds << "RicEclipsePropertyFilterInsert"; - + commandIds << "Separator"; commandIds << "RicDeleteItemFeature"; } else if (dynamic_cast(uiItem)) @@ -633,7 +634,7 @@ void RimProject::actionsBasedOnSelection(std::vector& actions) else if (dynamic_cast(uiItem)) { commandIds << "RicGeoMechPropertyFilterInsert"; - + commandIds << "Separator"; commandIds << "RicDeleteItemFeature"; } else if (dynamic_cast(uiItem)) @@ -651,13 +652,20 @@ void RimProject::actionsBasedOnSelection(std::vector& actions) caf::CmdFeatureManager* commandManager = caf::CmdFeatureManager::instance(); for (int i = 0; i < commandIds.size(); i++) { - caf::CmdFeature* feature = commandManager->getCommandFeature(commandIds[i].toStdString()); - if (feature->canFeatureBeExecuted()) + if (commandIds[i] == "Separator") { - QAction* act = commandManager->action(commandIds[i]); - CVF_ASSERT(act); + contextMenu.addSeparator(); + } + else + { + caf::CmdFeature* feature = commandManager->getCommandFeature(commandIds[i].toStdString()); + if (feature->canFeatureBeExecuted()) + { + QAction* act = commandManager->action(commandIds[i]); + CVF_ASSERT(act); - actions.push_back(act); + contextMenu.addAction(act); + } } } } diff --git a/ApplicationCode/ProjectDataModel/RimProject.h b/ApplicationCode/ProjectDataModel/RimProject.h index 700692f567..eca5ecbc9c 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.h +++ b/ApplicationCode/ProjectDataModel/RimProject.h @@ -44,6 +44,7 @@ namespace caf class QAction; +class QMenu; //================================================================================================== /// @@ -80,7 +81,7 @@ public: RimOilField* activeOilField(); - void actionsBasedOnSelection(std::vector& actions); + void actionsBasedOnSelection(QMenu& contextMenu); protected: // Overridden methods diff --git a/ApplicationCode/UserInterface/RiuMainWindow.cpp b/ApplicationCode/UserInterface/RiuMainWindow.cpp index 076721f52f..a4abeb7596 100644 --- a/ApplicationCode/UserInterface/RiuMainWindow.cpp +++ b/ApplicationCode/UserInterface/RiuMainWindow.cpp @@ -2240,15 +2240,8 @@ void RiuMainWindow::customMenuRequested(const QPoint& pos) { QMenu menu; - std::vector actions; - RiaApplication* app = RiaApplication::instance(); - app->project()->actionsBasedOnSelection(actions); - - for (size_t i = 0; i < actions.size(); i++) - { - menu.addAction(actions[i]); - } + app->project()->actionsBasedOnSelection(menu); // Qt doc: QAbstractScrollArea and its subclasses that map the context menu event to coordinates of the viewport(). QPoint globalPos = m_projectTreeView->treeView()->viewport()->mapToGlobal(pos);