From 9a5af909f2318156c065bd13c0fa61e7be63f200 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 27 Aug 2026 12:45:28 +0200 Subject: [PATCH] #14511 Activate 3D view after importing grid model from summary case --- .../ProjectDataModel/RimReloadCaseTools.cpp | 37 ++++++++++++++++--- .../ProjectDataModel/RimReloadCaseTools.h | 1 + 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp b/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp index aaa452fe5c..064f0793d9 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp @@ -20,6 +20,7 @@ #include "RiaEclipseFileNameTools.h" #include "RiaFractureDefines.h" +#include "RiaGuiApplication.h" #include "RiaImportEclipseCaseTools.h" #include "RiaLogging.h" #include "RiaPreferencesGrid.h" @@ -48,10 +49,12 @@ #include "RimSummaryCaseMainCollection.h" #include "Riu3DMainWindowTools.h" +#include "RiuMainWindow.h" #include "cafAssert.h" #include +#include //-------------------------------------------------------------------------------------------------- /// @@ -229,6 +232,8 @@ bool RimReloadCaseTools::openOrImportGridModelFromSummaryCase( const RimSummaryC { RiaLogging::info( std::format( "Imported {}", candidateGridFileName ) ); + activateFirstView( RimProject::current()->eclipseCaseFromCaseId( id ) ); + return true; } } @@ -254,15 +259,35 @@ bool RimReloadCaseTools::findGridModelAndActivateFirstView( const RimSummaryCase auto gridCase = RimReloadCaseTools::gridModelFromSummaryCase( summaryCase ); if ( gridCase ) { - if ( !gridCase->gridViews().empty() ) - { - RicShowMainWindowFeature::showMainWindow(); - - Riu3DMainWindowTools::selectAsCurrentItem( gridCase->gridViews().front() ); - } + activateFirstView( gridCase ); return true; } return false; } + +//-------------------------------------------------------------------------------------------------- +/// Bring the 3D main window to front, and make the first view of the given case the active view +//-------------------------------------------------------------------------------------------------- +void RimReloadCaseTools::activateFirstView( RimEclipseCase* eclipseCase ) +{ + if ( !eclipseCase || eclipseCase->gridViews().empty() ) return; + + RicShowMainWindowFeature::showMainWindow(); + + Riu3DMainWindowTools::selectAsCurrentItem( eclipseCase->gridViews().front() ); + + if ( auto mainWindow = RiaGuiApplication::isRunning() ? RiuMainWindow::instance() : nullptr ) + { + // Defer the raise until the already queued events have been processed. Activating the window directly ends up + // with the plot window on top. + QTimer::singleShot( 0, + mainWindow, + [mainWindow]() + { + mainWindow->raise(); + mainWindow->activateWindow(); + } ); + } +} diff --git a/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.h b/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.h index fdef595ad0..c946e03256 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.h +++ b/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.h @@ -47,4 +47,5 @@ private: static void updateAllPlots(); static bool findGridModelAndActivateFirstView( const RimSummaryCase* summaryCase ); + static void activateFirstView( RimEclipseCase* eclipseCase ); };