#1385 Fixed copy view problem, when flow diagnostics result was used.

Also fixed potential other problems due to same cause: resolve must be done before initAfterRead
This commit is contained in:
Jacob Støren 2017-04-03 12:33:27 +02:00
parent 3cefc2f7a8
commit 5e6018acb7
5 changed files with 20 additions and 10 deletions

View File

@ -21,6 +21,8 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RiuMainWindow.h"
#include "RicPasteFeatureImpl.h" #include "RicPasteFeatureImpl.h"
#include "RimEclipseCase.h" #include "RimEclipseCase.h"
@ -83,6 +85,8 @@ void RicPasteEclipseViewsFeature::onActionTriggered(bool isChecked)
std::vector<caf::PdmPointer<RimEclipseView> > eclipseViews; std::vector<caf::PdmPointer<RimEclipseView> > eclipseViews;
objectGroup.objectsByType(&eclipseViews); objectGroup.objectsByType(&eclipseViews);
RimEclipseView* lastViewCopy = nullptr;
// Add cases to case group // Add cases to case group
for (size_t i = 0; i < eclipseViews.size(); i++) for (size_t i = 0; i < eclipseViews.size(); i++)
{ {
@ -97,16 +101,18 @@ void RicPasteEclipseViewsFeature::onActionTriggered(bool isChecked)
// Resolve references after reservoir view has been inserted into Rim structures // Resolve references after reservoir view has been inserted into Rim structures
// Intersections referencing a well path/ simulation well requires this // Intersections referencing a well path/ simulation well requires this
// TODO: initAfterReadRecursively can probably be removed
rimReservoirView->initAfterReadRecursively();
rimReservoirView->resolveReferencesRecursively(); rimReservoirView->resolveReferencesRecursively();
rimReservoirView->initAfterReadRecursively();
rimReservoirView->loadDataAndUpdate(); rimReservoirView->loadDataAndUpdate();
caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView); caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView);
eclipseCase->updateConnectedEditors(); eclipseCase->updateConnectedEditors();
lastViewCopy = rimReservoirView;
} }
if (lastViewCopy) RiuMainWindow::instance()->selectAsCurrentItem(lastViewCopy);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -21,6 +21,8 @@
#include "RicPasteFeatureImpl.h" #include "RicPasteFeatureImpl.h"
#include "RiuMainWindow.h"
#include "RimGeoMechView.h" #include "RimGeoMechView.h"
#include "RimGeoMechCase.h" #include "RimGeoMechCase.h"
@ -77,6 +79,8 @@ void RicPasteGeoMechViewsFeature::onActionTriggered(bool isChecked)
std::vector<caf::PdmPointer<RimGeoMechView> > geomViews; std::vector<caf::PdmPointer<RimGeoMechView> > geomViews;
objectGroup.objectsByType(&geomViews); objectGroup.objectsByType(&geomViews);
RimGeoMechView* lastViewCopy = nullptr;
// Add cases to case group // Add cases to case group
for (size_t i = 0; i < geomViews.size(); i++) for (size_t i = 0; i < geomViews.size(); i++)
{ {
@ -89,15 +93,19 @@ void RicPasteGeoMechViewsFeature::onActionTriggered(bool isChecked)
// Resolve references after reservoir view has been inserted into Rim structures // Resolve references after reservoir view has been inserted into Rim structures
// Intersections referencing a well path requires this // Intersections referencing a well path requires this
rimReservoirView->initAfterReadRecursively();
rimReservoirView->resolveReferencesRecursively(); rimReservoirView->resolveReferencesRecursively();
rimReservoirView->initAfterReadRecursively();
caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView); caf::PdmDocument::updateUiIconStateRecursively(rimReservoirView);
rimReservoirView->loadDataAndUpdate(); rimReservoirView->loadDataAndUpdate();
geomCase->updateConnectedEditors(); geomCase->updateConnectedEditors();
lastViewCopy = rimReservoirView;
} }
if (lastViewCopy) RiuMainWindow::instance()->selectAsCurrentItem(lastViewCopy);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -152,10 +152,8 @@ void RicExportMultipleSnapshotsFeature::exportMultipleSnapshots(const QString& f
copyOfGeoMechView->setGeoMechCase(geomCase); copyOfGeoMechView->setGeoMechCase(geomCase);
// Resolve references after reservoir view has been inserted into Rim structures // Resolve references after reservoir view has been inserted into Rim structures
// Intersections referencing a well path/ simulation well requires this
// TODO: initAfterReadRecursively can probably be removed
copyOfGeoMechView->initAfterReadRecursively();
copyOfGeoMechView->resolveReferencesRecursively(); copyOfGeoMechView->resolveReferencesRecursively();
copyOfGeoMechView->initAfterReadRecursively();
copyOfGeoMechView->loadDataAndUpdate(); copyOfGeoMechView->loadDataAndUpdate();

View File

@ -190,10 +190,8 @@ RimEclipseView* RimEclipseCase::createCopyAndAddView(const RimEclipseView* sourc
reservoirViews().push_back(rimEclipseView); reservoirViews().push_back(rimEclipseView);
// Resolve references after reservoir view has been inserted into Rim structures // Resolve references after reservoir view has been inserted into Rim structures
// Intersections referencing a well path/ simulation well requires this
// TODO: initAfterReadRecursively can probably be removed
rimEclipseView->initAfterReadRecursively();
rimEclipseView->resolveReferencesRecursively(); rimEclipseView->resolveReferencesRecursively();
rimEclipseView->initAfterReadRecursively();
return rimEclipseView; return rimEclipseView;
} }

View File

@ -672,7 +672,7 @@ RigFlowDiagResultAddress RimEclipseResultDefinition::flowDiagResAddress() const
} }
else else
{ {
RimFlowDiagSolution* flowSol = m_flowSolutionUiField(); RimFlowDiagSolution* flowSol = m_flowSolution();
if (flowSol) if (flowSol)
{ {
std::vector<QString> tracerNames = flowSol->tracerNames(); std::vector<QString> tracerNames = flowSol->tracerNames();