#4857 Fix measurement picking in comparison view.

This commit is contained in:
Kristian Bendiksen 2019-10-28 14:08:15 +01:00
parent 6e43fee396
commit 2c3b51ad3f
7 changed files with 22 additions and 14 deletions

View File

@ -269,7 +269,7 @@ RimGridView* RiaApplication::activeMainOrComparisonGridView()
RimGridView* activeView = RiaApplication::instance()->activeGridView();
RimGridView* viewOrComparisonView = activeView;
if ( activeView->viewer()->viewerCommands()->isCurrentPickInComparisonView() )
if ( activeView != nullptr && activeView->viewer()->viewerCommands()->isCurrentPickInComparisonView() )
{
if ( RimGridView* compView = dynamic_cast<RimGridView*>( activeView->activeComparisonView() ) )
{

View File

@ -23,6 +23,7 @@
#include "RiuViewerCommands.h"
#include "Rim3dView.h"
#include "RimGridView.h"
#include "RimIntersection.h"
#include "RimMeasurement.h"
#include "RimProject.h"
@ -84,7 +85,7 @@ void RicMeasurementPickEventHandler::enablePolyLineMode( bool polyLineModeEnable
//--------------------------------------------------------------------------------------------------
bool RicMeasurementPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& eventObject )
{
auto measurement = RiaApplication::instance()->project()->measurement();
RimMeasurement* measurement = RiaApplication::instance()->project()->measurement();
if ( measurement && measurement->measurementMode() )
{
@ -98,8 +99,7 @@ bool RicMeasurementPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& ev
}
}
Rim3dView* rimView = RiaApplication::instance()->activeReservoirView();
Rim3dView* rimView = dynamic_cast<Rim3dView*>( RiaApplication::instance()->activeMainOrComparisonGridView() );
if ( firstGeometryPickInfo && rimView )
{
cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform();

View File

@ -23,6 +23,7 @@
#include "Rim3dView.h"
#include "RimMeasurement.h"
#include "RimProject.h"
#include "RimGridView.h"
#include "cafCmdFeatureManager.h"
#include "cafPdmUiPropertyViewDialog.h"
@ -123,7 +124,7 @@ Rim3dView* RicToggleMeasurementModeFeature::activeView() const
{
RiaApplication* app = RiaApplication::instance();
CAF_ASSERT( app );
auto view = app->activeReservoirView();
auto view = dynamic_cast<Rim3dView*>(app->activeMainOrComparisonGridView());
return view;
}

View File

@ -21,6 +21,7 @@
#include "RiaApplication.h"
#include "Rim3dView.h"
#include "RimGridView.h"
#include "MeasurementCommands/RicMeasurementPickEventHandler.h"
@ -89,7 +90,7 @@ RimMeasurement::MeasurementMode RimMeasurement::measurementMode() const
//--------------------------------------------------------------------------------------------------
void RimMeasurement::addPointInDomainCoords( const Vec3d& domainCoord )
{
auto activeView = RiaApplication::instance()->activeReservoirView();
auto activeView = dynamic_cast<Rim3dView*>( RiaApplication::instance()->activeMainOrComparisonGridView() );
if ( m_sourceView.p() != activeView )
{
@ -194,8 +195,6 @@ RimMeasurement::Lengths RimMeasurement::calculateLenghts() const
//--------------------------------------------------------------------------------------------------
void RimMeasurement::updateView() const
{
if ( m_sourceView )
{
m_sourceView->updateMeasurement();
}
Rim3dView* rimView = RiaApplication::instance()->activeReservoirView();
rimView->createMeasurementDisplayModelAndRedraw();
}

View File

@ -1027,11 +1027,18 @@ void Rim3dView::updateZScaleLabel()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dView::updateMeasurement()
void Rim3dView::createMeasurementDisplayModelAndRedraw()
{
if ( m_viewer )
appendMeasurementToModel();
if ( Rim3dView* depView = prepareComparisonView() )
{
depView->appendMeasurementToModel();
restoreComparisonView();
}
if ( nativeOrOverrideViewer() )
{
appendMeasurementToModel();
nativeOrOverrideViewer()->update();
}
}

View File

@ -161,7 +161,7 @@ public:
void updateAnnotationItems();
void updateScaling();
void updateZScaleLabel();
void updateMeasurement();
void createMeasurementDisplayModelAndRedraw();
bool isMasterView() const;
Rim3dView* activeComparisonView() const;

View File

@ -324,6 +324,7 @@ void RiuSelectionChangedHandler::scheduleUpdateForAllVisibleViews() const
for ( size_t i = 0; i < visibleViews.size(); i++ )
{
visibleViews[i]->createHighlightAndGridBoxDisplayModelWithRedraw();
visibleViews[i]->createMeasurementDisplayModelAndRedraw();
}
}
}