diff --git a/ApplicationCode/ProjectDataModel/RimViewLink.cpp b/ApplicationCode/ProjectDataModel/RimViewLink.cpp index 76e59d9489..4e15fd14e0 100644 --- a/ApplicationCode/ProjectDataModel/RimViewLink.cpp +++ b/ApplicationCode/ProjectDataModel/RimViewLink.cpp @@ -65,6 +65,7 @@ RimViewLink::RimViewLink(void) //-------------------------------------------------------------------------------------------------- RimViewLink::~RimViewLink(void) { + this->removeOverrides(); } //-------------------------------------------------------------------------------------------------- @@ -461,3 +462,19 @@ void RimViewLink::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiO visibleCells->add(&syncPropertyFilters); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimViewLink::removeOverrides() +{ + + if (m_managedView) + { + RimEclipseView* manEclView = managedEclipseView(); + RimGeoMechView* manGeoView = managedGeoView(); + m_managedView->setOverrideRangeFilterCollection(NULL); + if (manEclView) manEclView->setOverridePropertyFilterCollection(NULL); + if (manGeoView) manGeoView->setOverridePropertyFilterCollection(NULL); + } +} + diff --git a/ApplicationCode/ProjectDataModel/RimViewLink.h b/ApplicationCode/ProjectDataModel/RimViewLink.h index a125c22e65..fc7c2cc8c4 100644 --- a/ApplicationCode/ProjectDataModel/RimViewLink.h +++ b/ApplicationCode/ProjectDataModel/RimViewLink.h @@ -56,6 +56,7 @@ public: void configureOverrides(); void updateOptionSensitivity(); + void removeOverrides(); protected: virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); diff --git a/ApplicationCode/ProjectDataModel/RimViewLinker.cpp b/ApplicationCode/ProjectDataModel/RimViewLinker.cpp index 71951806ff..934821b02f 100644 --- a/ApplicationCode/ProjectDataModel/RimViewLinker.cpp +++ b/ApplicationCode/ProjectDataModel/RimViewLinker.cpp @@ -72,6 +72,7 @@ RimViewLinker::RimViewLinker(void) //-------------------------------------------------------------------------------------------------- RimViewLinker::~RimViewLinker(void) { + viewLinks.deleteAllChildObjects(); } //-------------------------------------------------------------------------------------------------- @@ -419,6 +420,18 @@ bool RimViewLinker::isActive() //-------------------------------------------------------------------------------------------------- void RimViewLinker::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { + if (&m_isActive == changedField) + { + if (m_isActive) + { + this->applyAllOperations(); + } + else + { + this->removeOverrides(); + } + } + updateUiIcon(); } @@ -514,3 +527,17 @@ void RimViewLinker::scheduleCreateDisplayModelAndRedrawForDependentViews() } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimViewLinker::removeOverrides() +{ + for (size_t i = 0; i < viewLinks.size(); i++) + { + if (viewLinks[i]->managedView()) + { + viewLinks[i]->removeOverrides(); + } + } +} + diff --git a/ApplicationCode/ProjectDataModel/RimViewLinker.h b/ApplicationCode/ProjectDataModel/RimViewLinker.h index a6302a5780..a48a2e59be 100644 --- a/ApplicationCode/ProjectDataModel/RimViewLinker.h +++ b/ApplicationCode/ProjectDataModel/RimViewLinker.h @@ -62,6 +62,7 @@ public: void scheduleCreateDisplayModelAndRedrawForDependentViews(); void configureOverrides(); + void removeOverrides(); void allViews(std::vector& views); diff --git a/ApplicationCode/ProjectDataModel/RimViewLinkerCollection.cpp b/ApplicationCode/ProjectDataModel/RimViewLinkerCollection.cpp index fdd4180f48..50b88b5ac9 100644 --- a/ApplicationCode/ProjectDataModel/RimViewLinkerCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimViewLinkerCollection.cpp @@ -71,6 +71,24 @@ void RimViewLinkerCollection::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTre //-------------------------------------------------------------------------------------------------- void RimViewLinkerCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { + if (&isActive == changedField) + { + if (isActive) + { + for (size_t cIdx = 0; cIdx < viewLinkers.size(); ++cIdx) + { + viewLinkers[cIdx]->applyAllOperations(); + } + } + else + { + for (size_t cIdx = 0; cIdx < viewLinkers.size(); ++cIdx) + { + viewLinkers[cIdx]->removeOverrides(); + } + } + } + this->updateUiIconFromToggleField(); }