From 14e94ea23209f6cb5ed66a2803f4d78e20feabb7 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 14 Sep 2018 09:30:05 +0200 Subject: [PATCH] #3364 Fault Collection : Crash when case fails to load --- .../ProjectDataModel/RimEclipseView.cpp | 1 - .../RimFaultInViewCollection.cpp | 43 ++++++++----------- .../RimFaultInViewCollection.h | 9 ++-- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp index 2b1cb1d59a..45f531b5b9 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp @@ -823,7 +823,6 @@ void RimEclipseView::onLoadDataAndUpdate() this->m_propertyFilterCollection()->loadAndInitializePropertyFilters(); - this->faultCollection()->setReservoirView(this); this->faultCollection()->syncronizeFaults(); m_reservoirGridPartManager->clearGeometryCache(); diff --git a/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.cpp b/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.cpp index 5bfafccde1..33cfd5872e 100644 --- a/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.cpp @@ -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& a, const cvf::ref& 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 constRigFaults = m_reservoirView->mainGrid()->faults(); + const cvf::Collection constRigFaults = parentView()->mainGrid()->faults(); cvf::Collection rigFaults; { @@ -273,7 +259,7 @@ void RimFaultInViewCollection::syncronizeFaults() // NNCs this->noCommonAreaNnncCollection()->noCommonAreaNncs().deleteAllChildObjects(); - RigMainGrid* mainGrid = m_reservoirView->mainGrid(); + RigMainGrid* mainGrid = parentView()->mainGrid(); std::vector& 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; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.h b/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.h index 7e91ac2875..ff7982ba58 100644 --- a/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.h +++ b/ApplicationCode/ProjectDataModel/RimFaultInViewCollection.h @@ -57,7 +57,6 @@ public: RimFaultInViewCollection(); virtual ~RimFaultInViewCollection(); - void setReservoirView(RimEclipseView* ownerReservoirView); void syncronizeFaults(); bool isGridVisualizationMode() const; @@ -82,13 +81,13 @@ public: caf::PdmChildField 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 m_showFaultsOutsideFilters; - RimEclipseView* m_reservoirView; };