#3364 Fault Collection : Crash when case fails to load

This commit is contained in:
Magne Sjaastad 2018-09-14 09:30:05 +02:00
parent 3a08fc65ba
commit 14e94ea232
3 changed files with 23 additions and 30 deletions

View File

@ -823,7 +823,6 @@ void RimEclipseView::onLoadDataAndUpdate()
this->m_propertyFilterCollection()->loadAndInitializePropertyFilters();
this->faultCollection()->setReservoirView(this);
this->faultCollection()->syncronizeFaults();
m_reservoirGridPartManager->clearGeometryCache();

View File

@ -84,8 +84,6 @@ RimFaultInViewCollection::RimFaultInViewCollection()
CAF_PDM_InitFieldNoDefault(&faults, "Faults", "Faults", "", "", "");
faults.uiCapability()->setUiHidden(true);
m_reservoirView = nullptr;
}
//--------------------------------------------------------------------------------------------------
@ -108,8 +106,8 @@ void RimFaultInViewCollection::fieldChangedByUi(const caf::PdmFieldHandle* chang
if (&faultLabelColor == changedField)
{
m_reservoirView->scheduleReservoirGridGeometryRegen();
m_reservoirView->crossSectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
parentView()->scheduleReservoirGridGeometryRegen();
parentView()->crossSectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
}
if (&showFaultFaces == changedField ||
@ -123,11 +121,8 @@ void RimFaultInViewCollection::fieldChangedByUi(const caf::PdmFieldHandle* chang
&hideNncsWhenNoResultIsAvailable == changedField
)
{
if (m_reservoirView)
{
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
m_reservoirView->crossSectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
}
parentView()->scheduleCreateDisplayModelAndRedraw();
parentView()->crossSectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
}
@ -138,15 +133,6 @@ void RimFaultInViewCollection::fieldChangedByUi(const caf::PdmFieldHandle* chang
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFaultInViewCollection::setReservoirView(RimEclipseView* ownerReservoirView)
{
m_reservoirView = ownerReservoirView;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -188,11 +174,11 @@ bool faultComparator(const cvf::ref<RigFault>& a, const cvf::ref<RigFault>& b)
//--------------------------------------------------------------------------------------------------
void RimFaultInViewCollection::syncronizeFaults()
{
if (!(m_reservoirView && m_reservoirView->mainGrid()) ) return;
if (!(parentView() && parentView()->mainGrid()) ) return;
const caf::ColorTable& colorTable = RiaColorTables::faultsPaletteColors();
const cvf::Collection<RigFault> constRigFaults = m_reservoirView->mainGrid()->faults();
const cvf::Collection<RigFault> constRigFaults = parentView()->mainGrid()->faults();
cvf::Collection<RigFault> rigFaults;
{
@ -273,7 +259,7 @@ void RimFaultInViewCollection::syncronizeFaults()
// NNCs
this->noCommonAreaNnncCollection()->noCommonAreaNncs().deleteAllChildObjects();
RigMainGrid* mainGrid = m_reservoirView->mainGrid();
RigMainGrid* mainGrid = parentView()->mainGrid();
std::vector<RigConnection>& nncConnections = mainGrid->nncData()->connections();
for (size_t i = 0; i < nncConnections.size(); i++)
{
@ -339,9 +325,7 @@ void RimFaultInViewCollection::syncronizeFaults()
//--------------------------------------------------------------------------------------------------
bool RimFaultInViewCollection::isGridVisualizationMode() const
{
CVF_ASSERT(m_reservoirView);
return m_reservoirView->isGridVisualizationMode();
return parentView()->isGridVisualizationMode();
}
//--------------------------------------------------------------------------------------------------
@ -373,6 +357,17 @@ void RimFaultInViewCollection::defineUiOrdering(QString uiConfigName, caf::PdmUi
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseView* RimFaultInViewCollection::parentView() const
{
RimEclipseView* view = nullptr;
this->firstAncestorOrThisOfTypeAsserted(view);
return view;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -57,7 +57,6 @@ public:
RimFaultInViewCollection();
virtual ~RimFaultInViewCollection();
void setReservoirView(RimEclipseView* ownerReservoirView);
void syncronizeFaults();
bool isGridVisualizationMode() const;
@ -82,13 +81,13 @@ public:
caf::PdmChildField<RimNoCommonAreaNncCollection*> noCommonAreaNnncCollection;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual caf::PdmFieldHandle* objectToggleField();
private:
virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering );
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
caf::PdmFieldHandle* objectToggleField() override;
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
RimEclipseView* parentView() const;
private:
caf::PdmField<bool> m_showFaultsOutsideFilters;
RimEclipseView* m_reservoirView;
};