mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4859 Update the view when the comparison view is changed
This commit is contained in:
parent
98f9eef0da
commit
f24543ce56
@ -220,7 +220,7 @@ QString Rim3dView::name() const
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString Rim3dView::autoName() const
|
||||
{
|
||||
@ -375,6 +375,39 @@ void Rim3dView::scheduleCreateDisplayModelAndRedraw()
|
||||
viewLinker->scheduleCreateDisplayModelAndRedrawForDependentViews();
|
||||
}
|
||||
}
|
||||
|
||||
// Update views using this as comparison
|
||||
std::set<Rim3dView*> containingViews = viewsUsingThisAsComparisonView();
|
||||
|
||||
for ( auto view : containingViews )
|
||||
{
|
||||
RiaViewRedrawScheduler::instance()->scheduleDisplayModelUpdateAndRedraw( view );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::set<Rim3dView*> Rim3dView::viewsUsingThisAsComparisonView()
|
||||
{
|
||||
std::set<Rim3dView*> containingViews;
|
||||
std::vector<caf::PdmFieldHandle*> fieldsReferringToMe;
|
||||
|
||||
this->referringPtrFields( fieldsReferringToMe );
|
||||
for ( caf::PdmFieldHandle* field : fieldsReferringToMe )
|
||||
{
|
||||
if ( field->keyword() == m_comparisonView.keyword() )
|
||||
{
|
||||
Rim3dView* containingView = nullptr;
|
||||
containingView = dynamic_cast<Rim3dView*>( field->ownerObject() );
|
||||
if ( containingView && containingView->activeComparisonView() == this )
|
||||
{
|
||||
containingViews.insert( containingView );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return containingViews;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -449,20 +482,32 @@ void Rim3dView::setCurrentTimeStep( int frameIndex )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void Rim3dView::updateCurrentTimeStepAndRedraw()
|
||||
{
|
||||
this->updateCurrentTimeStep();
|
||||
|
||||
if ( Rim3dView* depView = prepareComparisonView() )
|
||||
if ( nativeOrOverrideViewer() )
|
||||
{
|
||||
depView->updateCurrentTimeStep();
|
||||
this->updateCurrentTimeStep();
|
||||
|
||||
restoreComparisonView();
|
||||
if ( Rim3dView* depView = prepareComparisonView() )
|
||||
{
|
||||
depView->updateCurrentTimeStep();
|
||||
|
||||
restoreComparisonView();
|
||||
}
|
||||
|
||||
nativeOrOverrideViewer()->update();
|
||||
}
|
||||
|
||||
std::set<Rim3dView*> containerViews = this->viewsUsingThisAsComparisonView();
|
||||
if ( !containerViews.empty() && !isUsingOverrideViewer())
|
||||
{
|
||||
for ( auto view : containerViews )
|
||||
{
|
||||
view->updateCurrentTimeStepAndRedraw();
|
||||
}
|
||||
}
|
||||
|
||||
RimProject* project;
|
||||
firstAncestorOrThisOfTypeAsserted( project );
|
||||
project->mainPlotCollection()->updateCurrentTimeStepInPlots();
|
||||
|
||||
if ( nativeOrOverrideViewer() ) nativeOrOverrideViewer()->update();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -494,7 +539,7 @@ void Rim3dView::createDisplayModelAndRedraw()
|
||||
if ( isTimeStepDependentDataVisibleInThisOrComparisonView() )
|
||||
{
|
||||
// To make the override viewer see the new frame (skeletons) created by createDisplayModelAndRedraw
|
||||
// But avoid any call back down to this Rim3dView, instead do the update manually to not confuse the
|
||||
// But avoid any call back down to this Rim3dView, instead do the update manually to not confuse the
|
||||
// m_currentTimeStep
|
||||
nativeOrOverrideViewer()->caf::Viewer::slotSetCurrentFrame( currentTimeStep() );
|
||||
depView->updateCurrentTimeStep();
|
||||
@ -504,8 +549,8 @@ void Rim3dView::createDisplayModelAndRedraw()
|
||||
}
|
||||
else if ( !isUsingOverrideViewer() && viewer() )
|
||||
{
|
||||
// Remove the comparison scene data when
|
||||
// we do not have a comparison view
|
||||
// Remove the comparison scene data when
|
||||
// we do not have a comparison view
|
||||
// and are not doing override generation
|
||||
viewer()->setMainScene( nullptr, true );
|
||||
viewer()->removeAllFrames( true );
|
||||
@ -1365,11 +1410,11 @@ Rim3dView* Rim3dView::prepareComparisonView()
|
||||
Rim3dView* depView = activeComparisonView();
|
||||
|
||||
if ( !depView )
|
||||
{
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (isUsingOverrideViewer())
|
||||
if ( isUsingOverrideViewer() )
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ public:
|
||||
|
||||
void setName( const QString& name );
|
||||
QString name() const;
|
||||
QString autoName() const;
|
||||
QString autoName() const;
|
||||
|
||||
// Implementation of RiuViewerToViewInterface
|
||||
cvf::Color3f backgroundColor() const override
|
||||
@ -154,13 +154,14 @@ public:
|
||||
void updateCurrentTimeStepAndRedraw() override;
|
||||
virtual void scheduleGeometryRegen( RivCellSetEnum geometryType ) = 0;
|
||||
void scheduleCreateDisplayModelAndRedraw();
|
||||
void createDisplayModelAndRedraw();
|
||||
void createHighlightAndGridBoxDisplayModelWithRedraw();
|
||||
void updateGridBoxData();
|
||||
void updateAnnotationItems();
|
||||
void updateScaling();
|
||||
void updateZScaleLabel();
|
||||
void updateMeasurement();
|
||||
|
||||
void createDisplayModelAndRedraw();
|
||||
void createHighlightAndGridBoxDisplayModelWithRedraw();
|
||||
void updateGridBoxData();
|
||||
void updateAnnotationItems();
|
||||
void updateScaling();
|
||||
void updateZScaleLabel();
|
||||
void updateMeasurement();
|
||||
|
||||
bool isMasterView() const;
|
||||
|
||||
@ -295,8 +296,9 @@ private:
|
||||
|
||||
// Pure private methods : Override viewer and comparison view
|
||||
|
||||
void setOverrideViewer( RiuViewer* overrideViewer );
|
||||
Rim3dView* activeComparisonView() const;
|
||||
void setOverrideViewer( RiuViewer* overrideViewer );
|
||||
Rim3dView* activeComparisonView() const;
|
||||
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
|
||||
|
||||
Rim3dView* prepareComparisonView();
|
||||
void restoreComparisonView();
|
||||
|
@ -166,7 +166,7 @@ void RimCellEdgeColors::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
|
||||
{
|
||||
loadResult();
|
||||
|
||||
if ( m_reservoirView ) m_reservoirView->createDisplayModelAndRedraw();
|
||||
if ( m_reservoirView ) m_reservoirView->scheduleCreateDisplayModelAndRedraw();
|
||||
|
||||
if ( changedField == objectToggleField() )
|
||||
{
|
||||
|
@ -113,7 +113,7 @@ void RimEclipseCellColors::fieldChangedByUi( const caf::PdmFieldHandle* changedF
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_reservoirView ) m_reservoirView->createDisplayModelAndRedraw();
|
||||
if ( m_reservoirView ) m_reservoirView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user