mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4316 Fix context menu with multiple selected well paths
This commit is contained in:
@@ -95,9 +95,13 @@ void RicNewFishbonesSubsFeature::onActionTriggered(bool isChecked)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimFishbonesCollection* RicNewFishbonesSubsFeature::selectedFishbonesCollection()
|
||||
{
|
||||
std::vector<caf::PdmUiItem*> allSelectedItems;
|
||||
caf::SelectionManager::instance()->selectedItems(allSelectedItems);
|
||||
if (allSelectedItems.size() != 1u) return false;
|
||||
|
||||
RimFishbonesCollection* objToFind = nullptr;
|
||||
|
||||
caf::PdmUiItem* pdmUiItem = caf::SelectionManager::instance()->selectedItem();
|
||||
caf::PdmUiItem* pdmUiItem = allSelectedItems.front();
|
||||
|
||||
caf::PdmObjectHandle* objHandle = dynamic_cast<caf::PdmObjectHandle*>(pdmUiItem);
|
||||
if (objHandle)
|
||||
|
||||
@@ -83,31 +83,29 @@ void RicNewPerforationIntervalFeature::setupActionLook(QAction* actionToSetup)
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimPerforationCollection* RicNewPerforationIntervalFeature::selectedPerforationCollection()
|
||||
{
|
||||
RimPerforationCollection* objToFind = nullptr;
|
||||
|
||||
caf::PdmUiItem* pdmUiItem = caf::SelectionManager::instance()->selectedItem();
|
||||
{
|
||||
std::vector<caf::PdmUiItem*> selectedItems;
|
||||
caf::SelectionManager::instance()->selectedItems(selectedItems);
|
||||
if (selectedItems.size() != 1u) return nullptr;
|
||||
|
||||
caf::PdmUiItem* pdmUiItem = selectedItems.front();
|
||||
|
||||
RimPerforationCollection* perforationCollection = nullptr;
|
||||
caf::PdmObjectHandle* objHandle = dynamic_cast<caf::PdmObjectHandle*>(pdmUiItem);
|
||||
if (objHandle)
|
||||
{
|
||||
objHandle->firstAncestorOrThisOfType(objToFind);
|
||||
}
|
||||
objHandle->firstAncestorOrThisOfType(perforationCollection);
|
||||
|
||||
if (perforationCollection)
|
||||
return perforationCollection;
|
||||
|
||||
RimWellPath* wellPath = dynamic_cast<RimWellPath*>(objHandle);
|
||||
if (wellPath)
|
||||
return wellPath->perforationIntervalCollection();
|
||||
|
||||
if (objToFind == nullptr)
|
||||
{
|
||||
std::vector<RimWellPath*> wellPaths;
|
||||
caf::SelectionManager::instance()->objectsByType(&wellPaths);
|
||||
if (!wellPaths.empty())
|
||||
{
|
||||
return wellPaths[0]->perforationIntervalCollection();
|
||||
}
|
||||
RimWellPathCompletions* completions = caf::SelectionManager::instance()->selectedItemOfType<RimWellPathCompletions>();
|
||||
if (completions)
|
||||
{
|
||||
return completions->perforationCollection();
|
||||
}
|
||||
}
|
||||
|
||||
return objToFind;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,11 @@ CAF_CMD_SOURCE_INIT(RicNewValveFeature, "RicNewValveFeature");
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicNewValveFeature::isCommandEnabled()
|
||||
{
|
||||
const RimPerforationInterval* perfInterval = caf::SelectionManager::instance()->selectedItemOfType<RimPerforationInterval>();
|
||||
std::vector<caf::PdmUiItem*> allSelectedItems;
|
||||
caf::SelectionManager::instance()->selectedItems(allSelectedItems);
|
||||
if (allSelectedItems.size() != 1u) return false;
|
||||
|
||||
const RimPerforationInterval* perfInterval = dynamic_cast<RimPerforationInterval*>(allSelectedItems.front());
|
||||
return perfInterval != nullptr;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user