Make sure to track active 3d view even if it docks in plot window

This commit is contained in:
Jon Jenssen authored and JJ committed 2026-06-17 13:55:32 +02:00
1 parent 0c8c3865f1
commit fa8ed95a37
1 file changed
+16 -9
@@ -181,31 +181,38 @@ void RimDockWindowController::setAsActiveViewer()
if ( auto pdmView = viewPdmObject() ) if ( auto pdmView = viewPdmObject() )
{ {
for ( auto viewWin : getMainWindow()->viewWindows() ) auto view3d = dynamic_cast<Rim3dView*>( pdmView );
auto viewPlot = dynamic_cast<RimPlotWindow*>( pdmView );
RiuMainWindowBase* mainWindow = RiaGuiApplication::instance()->mainWindow();
if ( viewPlot ) mainWindow = RiaGuiApplication::instance()->mainPlotWindow();
if ( !mainWindow ) return;
for ( auto view : mainWindow->viewWindows() )
{ {
if ( viewWin->isActive() ) if ( view->isActive() )
{ {
viewWin->setActive( false ); view->setActive( false );
viewWin->updateWindowTitle(); view->updateWindowTitle();
} }
} }
pdmView->setActive( true ); pdmView->setActive( true );
pdmView->updateWindowTitle(); pdmView->updateWindowTitle();
if ( auto resView = dynamic_cast<Rim3dView*>( pdmView ) ) if ( view3d )
{ {
RiaApplication::instance()->setActiveReservoirView( resView ); RiaApplication::instance()->setActiveReservoirView( view3d );
if ( auto mainWin = dynamic_cast<RiuMainWindow*>( getMainWindow() ) ) if ( auto mainWin = dynamic_cast<RiuMainWindow*>( mainWindow ) )
{ {
mainWin->refreshViewActions(); mainWin->refreshViewActions();
mainWin->refreshAnimationActions(); mainWin->refreshAnimationActions();
mainWin->refreshDrawStyleActions(); mainWin->refreshDrawStyleActions();
} }
} }
else if ( auto plotView = dynamic_cast<RimPlotWindow*>( pdmView ) ) else if ( viewPlot )
{ {
RiuPlotMainWindowTools::selectAsCurrentItem( plotView ); RiuPlotMainWindowTools::selectAsCurrentItem( viewPlot );
RiuPlotMainWindowTools::refreshToolbars(); RiuPlotMainWindowTools::refreshToolbars();
} }
} }