diff --git a/ApplicationLibCode/Commands/CorrelationPlotCommands/RicCreateEnsembleFromFilteredCasesFeature.cpp b/ApplicationLibCode/Commands/CorrelationPlotCommands/RicCreateEnsembleFromFilteredCasesFeature.cpp index 80fd3e8d26..d0faa5080b 100644 --- a/ApplicationLibCode/Commands/CorrelationPlotCommands/RicCreateEnsembleFromFilteredCasesFeature.cpp +++ b/ApplicationLibCode/Commands/CorrelationPlotCommands/RicCreateEnsembleFromFilteredCasesFeature.cpp @@ -30,6 +30,7 @@ #include "RimSummaryCase.h" #include "RimSummaryEnsemble.h" +#include "cafPdmPointer.h" #include "cafSelectionManager.h" #include "cafSelectionManagerTools.h" @@ -54,7 +55,17 @@ RimParameterResultCrossPlot* selectedCrossPlot() RimEnsembleCurveSet* ensembleCurveSet() { - return caf::firstAncestorOfTypeFromSelectedObject(); + auto ancestor = caf::firstAncestorOfTypeFromSelectedObject(); + if ( ancestor != nullptr ) return ancestor; + + auto selectedObject = caf::SelectionManager::instance()->selectedItemOfType(); + if ( selectedObject != nullptr ) + { + auto ensembleCurveSet = selectedObject->descendantsIncludingThisOfType(); + if ( !ensembleCurveSet.empty() ) return ensembleCurveSet.front(); + } + + return nullptr; } } // namespace internal @@ -92,6 +103,21 @@ void RicCreateEnsembleFromFilteredCasesFeature::onActionTriggered( bool isChecke } } + if ( casesForNewEnsemble.empty() ) + { + QVariant userData = this->userData(); + if ( !userData.isNull() && userData.canConvert>() ) + { + if ( auto ensembleCurveSet = userData.value>() ) + { + if ( auto ensemble = ensembleCurveSet->summaryEnsemble() ) + { + casesForNewEnsemble = ensembleCurveSet->filterEnsembleCases( ensemble->allSummaryCases() ); + } + } + } + } + if ( casesForNewEnsemble.empty() ) { if ( auto curveSet = internal::ensembleCurveSet() ) diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSetCollection.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSetCollection.cpp index 95f2a497b8..37f8ef6302 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSetCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSetCollection.cpp @@ -328,7 +328,11 @@ void RimEnsembleCurveSetCollection::onChildDeleted( caf::PdmChildArrayFieldHandl std::vector& referringObjects ) { auto plot = firstAncestorOrThisOfType(); - if ( plot ) plot->updateConnectedEditors(); + if ( plot ) + { + plot->updateConnectedEditors(); + plot->updateAndRedrawTimeAnnotations(); + } } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuSummaryPlot.cpp b/ApplicationLibCode/UserInterface/RiuSummaryPlot.cpp index 13820345bd..4e8fcd7339 100644 --- a/ApplicationLibCode/UserInterface/RiuSummaryPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuSummaryPlot.cpp @@ -72,7 +72,16 @@ void RiuSummaryPlot::showContextMenu( QPoint pos ) menuBuilder.addSeparator(); menuBuilder.addCmdFeatureWithUserData( "RicDeleteSubPlotCtxFeature", "Delete Plot", plotVariant ); menuBuilder.addSeparator(); - menuBuilder.addCmdFeature( "RicCreateEnsembleFromFilteredCasesFeature" ); + + for ( auto curveSet : plot->curveSets() ) + { + if ( curveSet->isFiltered() ) + { + auto curveSetVariant = QVariant::fromValue( caf::PdmPointer( curveSet ) ); + auto name = "Create Ensemble from Filtered Cases: " + curveSet->name(); + menuBuilder.addCmdFeatureWithUserData( "RicCreateEnsembleFromFilteredCasesFeature", name, curveSetVariant ); + } + } } menuBuilder.addSeparator();