(#477) Fixed missing updates after toggle or delete of ViewLinker

Fixed missing delete of ViewLinker child objects
This commit is contained in:
Jacob Støren 2015-09-13 21:26:09 +02:00
parent f81cf98580
commit 1e232c23c5
5 changed files with 64 additions and 0 deletions

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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();
}
}
}

View File

@ -62,6 +62,7 @@ public:
void scheduleCreateDisplayModelAndRedrawForDependentViews();
void configureOverrides();
void removeOverrides();
void allViews(std::vector<RimView*>& views);

View File

@ -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();
}