#11516 Disable selection of cell result from intersection view

Selection of the cell result in the 3D view causes changes in active view and is very confusing for the user. Use "Activate Result in Project Tree" from right-click menu in the intersection view.
This commit is contained in:
Magne Sjaastad
2024-06-18 11:34:51 +02:00
parent 0d48c7d5b7
commit 2724f80e8e
3 changed files with 22 additions and 53 deletions

View File

@@ -404,26 +404,9 @@ bool Rim2dIntersectionView::showDefiningPoints() const
//--------------------------------------------------------------------------------------------------
std::vector<RimLegendConfig*> Rim2dIntersectionView::legendConfigs() const
{
std::vector<RimLegendConfig*> legendsIn3dView;
// Return empty list, as the intersection view has a copy of the legend items. Picking and selection of the
// corresponding item is handeled by handleOverlayItemPicked()
return legendsIn3dView;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool Rim2dIntersectionView::handleOverlayItemPicked( const cvf::OverlayItem* pickedOverlayItem ) const
{
if ( m_legendObjectToSelect )
{
if ( RiuMainWindow::instance() ) RiuMainWindow::instance()->selectAsCurrentItem( m_legendObjectToSelect );
return true;
}
return false;
return {};
}
//--------------------------------------------------------------------------------------------------
@@ -662,8 +645,6 @@ void Rim2dIntersectionView::onUpdateDisplayModelForCurrentTimeStep()
//--------------------------------------------------------------------------------------------------
void Rim2dIntersectionView::onUpdateLegends()
{
m_legendObjectToSelect = nullptr;
if ( !nativeOrOverrideViewer() || !m_intersection ) return;
nativeOrOverrideViewer()->removeAllColorLegends();
@@ -724,15 +705,11 @@ void Rim2dIntersectionView::onUpdateLegends()
{
m_ternaryLegendConfig()->setTitle( "Cell Result:\n" );
legend = m_ternaryLegendConfig()->titledOverlayFrame();
m_legendObjectToSelect = ternaryLegendConfig;
}
else
{
eclResDef->updateLegendTitle( m_legendConfig, "Cell Result:\n" );
legend = m_legendConfig()->titledOverlayFrame();
m_legendObjectToSelect = regularLegendConfig;
}
}
@@ -740,8 +717,6 @@ void Rim2dIntersectionView::onUpdateLegends()
{
geomResDef->updateLegendTextAndRanges( m_legendConfig(), "Cell Result:\n", m_currentTimeStep() );
legend = m_legendConfig()->titledOverlayFrame();
m_legendObjectToSelect = regularLegendConfig;
}
if ( legend )

View File

@@ -72,7 +72,6 @@ public:
bool showDefiningPoints() const;
std::vector<RimLegendConfig*> legendConfigs() const override;
bool handleOverlayItemPicked( const cvf::OverlayItem* pickedOverlayItem ) const;
protected:
void onUpdateLegends() override;
@@ -118,7 +117,5 @@ private:
caf::PdmField<bool> m_showDefiningPoints;
caf::PdmField<bool> m_showAxisLines;
caf::PdmPointer<caf::PdmObject> m_legendObjectToSelect;
const static cvf::Mat4d sm_defaultViewMatrix;
};

View File

@@ -1188,6 +1188,11 @@ void RiuViewerCommands::ijkFromCellIndex( Rim3dView* mainOrComparisonView, size_
//--------------------------------------------------------------------------------------------------
bool RiuViewerCommands::handleOverlayItemPicking( int winPosX, int winPosY )
{
if ( dynamic_cast<Rim2dIntersectionView*>( m_reservoirView.p() ) )
{
return false;
}
cvf::OverlayItem* pickedOverlayItem = m_viewer->overlayItem( winPosX, winPosY );
if ( !pickedOverlayItem )
{
@@ -1196,36 +1201,28 @@ bool RiuViewerCommands::handleOverlayItemPicking( int winPosX, int winPosY )
if ( pickedOverlayItem )
{
auto intersectionView = dynamic_cast<Rim2dIntersectionView*>( m_reservoirView.p() );
if ( intersectionView && intersectionView->handleOverlayItemPicked( pickedOverlayItem ) )
std::vector<RimLegendConfig*> legendConfigs = m_reservoirView->legendConfigs();
if ( m_reservoirView->activeComparisonView() )
{
return true;
std::vector<RimLegendConfig*> compViewLegendConfigs = m_reservoirView->activeComparisonView()->legendConfigs();
legendConfigs.insert( legendConfigs.end(), compViewLegendConfigs.begin(), compViewLegendConfigs.end() );
}
else
for ( const auto& legendConfig : legendConfigs )
{
std::vector<RimLegendConfig*> legendConfigs = m_reservoirView->legendConfigs();
if ( m_reservoirView->activeComparisonView() )
if ( legendConfig && legendConfig->titledOverlayFrame() == pickedOverlayItem )
{
std::vector<RimLegendConfig*> compViewLegendConfigs = m_reservoirView->activeComparisonView()->legendConfigs();
legendConfigs.insert( legendConfigs.end(), compViewLegendConfigs.begin(), compViewLegendConfigs.end() );
}
for ( const auto& legendConfig : legendConfigs )
{
if ( legendConfig && legendConfig->titledOverlayFrame() == pickedOverlayItem )
auto seisInterface = legendConfig->firstAncestorOfType<RimSeismicDataInterface>();
if ( seisInterface != nullptr )
{
auto seisInterface = legendConfig->firstAncestorOfType<RimSeismicDataInterface>();
if ( seisInterface != nullptr )
{
RiuMainWindow::instance()->selectAsCurrentItem( seisInterface );
}
else
{
RiuMainWindow::instance()->selectAsCurrentItem( legendConfig );
}
return true;
RiuMainWindow::instance()->selectAsCurrentItem( seisInterface );
}
else
{
RiuMainWindow::instance()->selectAsCurrentItem( legendConfig );
}
return true;
}
}
}