Get rid of "ghost" windows on startup. (#9171)

* Get rid of "ghost" windows on startup.
Removes hide all docking windows feature for now, to be replaced by a new implementation. Will probably break some tests due to this.
This commit is contained in:
jonjenssen 2022-08-09 16:40:50 +02:00 committed by GitHub
parent 63b26ebf2d
commit a3c561b7e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 24 additions and 489 deletions

View File

@ -425,8 +425,7 @@ void RiaGuiApplication::initialize()
// Create main windows // Create main windows
// The plot window is created to be able to set expanded state on created objects, but hidden by default // The plot window is created to be able to set expanded state on created objects, but hidden by default
getOrCreateAndShowMainWindow(); getOrCreateAndShowMainWindow();
RiuPlotMainWindow* plotMainWindow = getOrCreateMainPlotWindow(); getOrCreateMainPlotWindow();
plotMainWindow->hideAllDockWidgets();
RiuGuiTheme::updateGuiTheme( m_preferences->guiTheme() ); RiuGuiTheme::updateGuiTheme( m_preferences->guiTheme() );
@ -968,7 +967,6 @@ void RiaGuiApplication::createMainWindow()
m_mainWindow->setWindowTitle( "ResInsight " + platform ); m_mainWindow->setWindowTitle( "ResInsight " + platform );
m_mainWindow->setDefaultWindowSize(); m_mainWindow->setDefaultWindowSize();
m_mainWindow->setDefaultToolbarVisibility(); m_mainWindow->setDefaultToolbarVisibility();
m_mainWindow->storeDefaultDockWidgetVisibilitiesIfRequired();
m_mainWindow->loadWinGeoAndDockToolBarLayout(); m_mainWindow->loadWinGeoAndDockToolBarLayout();
m_mainWindow->showWindow(); m_mainWindow->showWindow();
} }
@ -996,18 +994,12 @@ void RiaGuiApplication::createMainPlotWindow()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow() RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow()
{ {
bool triggerReloadOfDockWidgetVisibilities = false;
if ( !m_mainPlotWindow ) if ( !m_mainPlotWindow )
{ {
createMainPlotWindow(); createMainPlotWindow();
m_mainPlotWindow->initializeGuiNewProjectLoaded(); m_mainPlotWindow->initializeGuiNewProjectLoaded();
loadAndUpdatePlotData(); loadAndUpdatePlotData();
} }
else
{
triggerReloadOfDockWidgetVisibilities = !m_mainPlotWindow->isVisible();
}
if ( m_mainPlotWindow->isMinimized() ) if ( m_mainPlotWindow->isMinimized() )
{ {
@ -1022,11 +1014,6 @@ RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow()
m_mainPlotWindow->raise(); m_mainPlotWindow->raise();
m_mainPlotWindow->activateWindow(); m_mainPlotWindow->activateWindow();
if ( triggerReloadOfDockWidgetVisibilities )
{
m_mainPlotWindow->restoreDockWidgetVisibilities();
}
return m_mainPlotWindow.get(); return m_mainPlotWindow.get();
} }
@ -1252,8 +1239,6 @@ void RiaGuiApplication::onProjectOpened()
m_mainPlotWindow->show(); m_mainPlotWindow->show();
m_mainPlotWindow->raise(); m_mainPlotWindow->raise();
} }
m_mainPlotWindow->restoreDockWidgetVisibilities();
} }
else if ( mainPlotWindow() ) else if ( mainPlotWindow() )
{ {
@ -1640,8 +1625,6 @@ void RiaGuiApplication::runMultiCaseSnapshots( const QString& templateProj
{ {
if ( !m_mainWindow ) return; if ( !m_mainWindow ) return;
m_mainWindow->hideAllDockWidgets();
const size_t numGridFiles = gridFileNames.size(); const size_t numGridFiles = gridFileNames.size();
for ( size_t i = 0; i < numGridFiles; i++ ) for ( size_t i = 0; i < numGridFiles; i++ )
{ {
@ -1656,8 +1639,6 @@ void RiaGuiApplication::runMultiCaseSnapshots( const QString& templateProj
RicSnapshotAllViewsToFileFeature::exportSnapshotOfViewsIntoFolder( snapshotFolderName ); RicSnapshotAllViewsToFileFeature::exportSnapshotOfViewsIntoFolder( snapshotFolderName );
} }
} }
m_mainWindow->loadWinGeoAndDockToolBarLayout();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -657,7 +657,6 @@ void RiaRegressionTestRunner::executeRegressionTests( const QString& regressionT
RiuMainWindow* mainWnd = RiuMainWindow::instance(); RiuMainWindow* mainWnd = RiuMainWindow::instance();
if ( mainWnd ) if ( mainWnd )
{ {
mainWnd->hideAllDockWidgets();
mainWnd->statusBar()->close(); mainWnd->statusBar()->close();
mainWnd->setDefaultWindowSize(); mainWnd->setDefaultWindowSize();
@ -667,8 +666,6 @@ void RiaRegressionTestRunner::executeRegressionTests( const QString& regressionT
m_rootPath = regressionTestPath; m_rootPath = regressionTestPath;
m_testFilter = testFilter; m_testFilter = testFilter;
runRegressionTest(); runRegressionTest();
mainWnd->loadWinGeoAndDockToolBarLayout();
} }
} }

View File

@ -82,7 +82,6 @@ caf::PdmScriptResponse RicfExportSnapshots::execute()
RiuMainWindow* mainWnd = RiuMainWindow::instance(); RiuMainWindow* mainWnd = RiuMainWindow::instance();
CVF_ASSERT( mainWnd ); CVF_ASSERT( mainWnd );
mainWnd->hideAllDockWidgets();
RiaGuiApplication::instance()->processEvents(); RiaGuiApplication::instance()->processEvents();
QString absolutePathToSnapshotDir = QString absolutePathToSnapshotDir =
@ -134,7 +133,6 @@ caf::PdmScriptResponse RicfExportSnapshots::execute()
fileSuffix ); fileSuffix );
} }
mainWnd->loadWinGeoAndDockToolBarLayout();
RiaGuiApplication::instance()->processEvents(); RiaGuiApplication::instance()->processEvents();
return caf::PdmScriptResponse(); return caf::PdmScriptResponse();

View File

@ -15,8 +15,6 @@ set(SOURCE_GROUP_HEADER_FILES
${CMAKE_CURRENT_LIST_DIR}/RicLaunchRegressionTestsFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicLaunchRegressionTestsFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicRunCommandFileFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicRunCommandFileFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryCleanupDialogFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryCleanupDialogFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicDefaultDockConfigEclipseFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicDefaultDockConfigGeoMechFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicExportObjectAndFieldKeywordsFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicExportObjectAndFieldKeywordsFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicSaveProjectNoGlobalPathsFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicSaveProjectNoGlobalPathsFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicShowClassNamesFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicShowClassNamesFeature.h
@ -40,8 +38,6 @@ set(SOURCE_GROUP_SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/RicLaunchRegressionTestsFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicLaunchRegressionTestsFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicRunCommandFileFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicRunCommandFileFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryCleanupDialogFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicShowMemoryCleanupDialogFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicDefaultDockConfigEclipseFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicDefaultDockConfigGeoMechFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicExportObjectAndFieldKeywordsFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicExportObjectAndFieldKeywordsFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicSaveProjectNoGlobalPathsFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicSaveProjectNoGlobalPathsFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicShowClassNamesFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicShowClassNamesFeature.cpp

View File

@ -1,54 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2019- Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RicDefaultDockConfigEclipseFeature.h"
#include "RiuDockWidgetTools.h"
#include <QAction>
CAF_CMD_SOURCE_INIT( RicDefaultDockConfigEclipseFeature, "RicDefaultDockConfigEclipseFeature" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicDefaultDockConfigEclipseFeature::isCommandEnabled()
{
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicDefaultDockConfigEclipseFeature::onActionTriggered( bool isChecked )
{
RiuDockWidgetTools::setVisibleDockingWindowsForEclipse();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicDefaultDockConfigEclipseFeature::setupActionLook( QAction* actionToSetup )
{
QString menuText = "Default Window Visibility";
#ifdef USE_ODB_API
menuText += " (Eclipse)";
#endif
actionToSetup->setText( menuText );
}

View File

@ -1,34 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2019- Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "cafCmdFeature.h"
//==================================================================================================
///
//==================================================================================================
class RicDefaultDockConfigEclipseFeature : public caf::CmdFeature
{
CAF_CMD_HEADER_INIT;
protected:
bool isCommandEnabled() override;
void onActionTriggered( bool isChecked ) override;
void setupActionLook( QAction* actionToSetup ) override;
};

View File

@ -1,49 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2019- Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RicDefaultDockConfigGeoMechFeature.h"
#include "RiuDockWidgetTools.h"
#include <QAction>
CAF_CMD_SOURCE_INIT( RicDefaultDockConfigGeoMechFeature, "RicDefaultDockConfigGeoMechFeature" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicDefaultDockConfigGeoMechFeature::isCommandEnabled()
{
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicDefaultDockConfigGeoMechFeature::onActionTriggered( bool isChecked )
{
RiuDockWidgetTools::setVisibleDockingWindowsForGeoMech();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicDefaultDockConfigGeoMechFeature::setupActionLook( QAction* actionToSetup )
{
actionToSetup->setText( "Default Window Visibility (Geo Mech)" );
}

View File

@ -1,34 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2019- Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "cafCmdFeature.h"
//==================================================================================================
///
//==================================================================================================
class RicDefaultDockConfigGeoMechFeature : public caf::CmdFeature
{
CAF_CMD_HEADER_INIT;
protected:
bool isCommandEnabled() override;
void onActionTriggered( bool isChecked ) override;
void setupActionLook( QAction* actionToSetup ) override;
};

View File

@ -46,8 +46,6 @@ void RicShowMainWindowFeature::showMainWindow()
} }
mainWnd->raise(); mainWnd->raise();
mainWnd->restoreDockWidgetVisibilities();
} }
else else
{ {

View File

@ -198,50 +198,6 @@ QString RiuDockWidgetTools::messagesName()
return "dockMessages"; return "dockMessages";
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QMap<QString, QVariant> RiuDockWidgetTools::widgetVisibilitiesForEclipse()
{
QMap<QString, QVariant> widgetVisibility;
widgetVisibility[RiuDockWidgetTools::projectTreeName()] = true;
widgetVisibility[RiuDockWidgetTools::propertyEditorName()] = true;
widgetVisibility[RiuDockWidgetTools::resultInfoName()] = true;
widgetVisibility[RiuDockWidgetTools::processMonitorName()] = true;
widgetVisibility[RiuDockWidgetTools::resultPlotName()] = true;
widgetVisibility[RiuDockWidgetTools::relPermPlotName()] = true;
widgetVisibility[RiuDockWidgetTools::pvtPlotName()] = true;
widgetVisibility[RiuDockWidgetTools::messagesName()] = true;
widgetVisibility[RiuDockWidgetTools::undoStackName()] = false;
widgetVisibility[RiuDockWidgetTools::mohrsCirclePlotName()] = false;
return widgetVisibility;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QMap<QString, QVariant> RiuDockWidgetTools::widgetVisibilitiesForGeoMech()
{
QMap<QString, QVariant> widgetVisibility;
widgetVisibility[RiuDockWidgetTools::projectTreeName()] = true;
widgetVisibility[RiuDockWidgetTools::propertyEditorName()] = true;
widgetVisibility[RiuDockWidgetTools::resultInfoName()] = true;
widgetVisibility[RiuDockWidgetTools::processMonitorName()] = true;
widgetVisibility[RiuDockWidgetTools::resultPlotName()] = true;
widgetVisibility[RiuDockWidgetTools::relPermPlotName()] = false;
widgetVisibility[RiuDockWidgetTools::pvtPlotName()] = false;
widgetVisibility[RiuDockWidgetTools::messagesName()] = true;
widgetVisibility[RiuDockWidgetTools::undoStackName()] = false;
widgetVisibility[RiuDockWidgetTools::mohrsCirclePlotName()] = true;
return widgetVisibility;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -267,138 +223,12 @@ QAction* RiuDockWidgetTools::toggleActionForWidget( const ads::CDockManager* doc
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::setVisibleDockingWindowsForEclipse() void RiuDockWidgetTools::showDockWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName )
{ {
if ( !RiuMainWindow::instance() ) return; auto dw = findDockWidget( dockManager, dockWidgetName );
if ( dw )
RiuMainWindow* mainWindow = RiuMainWindow::instance();
auto widgetVisibilities = widgetVisibilitiesForEclipse();
applyDockWidgetVisibilities( mainWindow->dockManager(), widgetVisibilities );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::setVisibleDockingWindowsForGeoMech()
{
if ( !RiuMainWindow::instance() ) return;
RiuMainWindow* mainWindow = RiuMainWindow::instance();
auto widgetVisibilities = widgetVisibilitiesForGeoMech();
applyDockWidgetVisibilities( mainWindow->dockManager(), widgetVisibilities );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::setDockWidgetVisibility( const ads::CDockManager* dockManager,
const QString& dockWidgetName,
bool isVisible )
{
ads::CDockWidget* dockWidget = findDockWidget( dockManager, dockWidgetName );
if ( dockWidget )
{ {
dockWidget->setVisible( isVisible ); dw->show();
} dw->raise();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QVariant RiuDockWidgetTools::dockWidgetsVisibility( const ads::CDockManager* dockManager )
{
QMap<QString, QVariant> widgetVisibility;
auto dockWidgets = dockManager->dockWidgetsMap();
for ( auto dock : dockWidgets )
{
if ( dock )
{
bool isVisible = dock->isVisible();
widgetVisibility[dock->objectName()] = isVisible;
}
}
return QVariant( widgetVisibility );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QVariant RiuDockWidgetTools::defaultDockWidgetVisibilities()
{
return QVariant( widgetVisibilitiesForEclipse() );
}
//--------------------------------------------------------------------------------------------------
/// Qwt widgets in non-visible dock widgets (tabbed dock windows) will on some systems enter an
/// eternal update loop. This is seen on both Windows and Linux.
/// The workaround is to hide all dock widgets, and then set visible the docking windows seen to
/// trigger the unwanted behavior
///
/// https://github.com/OPM/ResInsight/issues/6743
/// https://github.com/OPM/ResInsight/issues/6627
//--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::workaroundForQwtDockWidgets()
{
if ( !RiuMainWindow::instance() ) return;
RiuMainWindow* mainWindow = RiuMainWindow::instance();
auto dockWidgets = mainWindow->dockManager()->dockWidgetsMap();
for ( auto dock : dockWidgets )
{
if ( dock ) dock->setVisible( false );
}
QApplication::processEvents();
{
auto dock = mainWindow->dockManager()->findDockWidget( relPermPlotName() );
if ( dock )
{
dock->setVisible( true );
}
}
{
auto dock = mainWindow->dockManager()->findDockWidget( pvtPlotName() );
if ( dock )
{
dock->setVisible( true );
}
}
QApplication::processEvents();
mainWindow->loadWinGeoAndDockToolBarLayout();
mainWindow->restoreDockWidgetVisibilities();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::applyDockWidgetVisibilities( const ads::CDockManager* dockManager,
const QMap<QString, QVariant>& widgetVisibilities )
{
auto dockWidgets = dockManager->dockWidgetsMap();
for ( auto dock : dockWidgets )
{
if ( dock )
{
bool isVisible = true;
auto widgetVisibility = widgetVisibilities.find( dock->objectName() );
if ( widgetVisibility != widgetVisibilities.end() )
{
isVisible = widgetVisibility.value().toBool();
}
dock->setVisible( isVisible );
}
} }
} }

View File

@ -68,22 +68,7 @@ public:
static QAction* toggleActionForWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName ); static QAction* toggleActionForWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName );
static QVariant dockWidgetsVisibility( const ads::CDockManager* dockManager ); static ads::CDockWidget* findDockWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName );
static QVariant defaultDockWidgetVisibilities();
static void workaroundForQwtDockWidgets(); static void showDockWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName );
static void setVisibleDockingWindowsForEclipse();
static void setVisibleDockingWindowsForGeoMech();
static void
setDockWidgetVisibility( const ads::CDockManager* dockManager, const QString& dockWidgetName, bool isVisible );
static void applyDockWidgetVisibilities( const ads::CDockManager* dockManager,
const QMap<QString, QVariant>& visibilityMap );
static ads::CDockWidget* findDockWidget( const ads::CDockManager*, const QString& dockWidgetName );
private:
static QMap<QString, QVariant> widgetVisibilitiesForEclipse();
static QMap<QString, QVariant> widgetVisibilitiesForGeoMech();
}; };

View File

@ -163,11 +163,6 @@ RiuMainWindow::RiuMainWindow()
m_memoryRefreshTimer = new QTimer( this ); m_memoryRefreshTimer = new QTimer( this );
connect( m_memoryRefreshTimer, SIGNAL( timeout() ), this, SLOT( updateMemoryUsage() ) ); connect( m_memoryRefreshTimer, SIGNAL( timeout() ), this, SLOT( updateMemoryUsage() ) );
m_memoryRefreshTimer->start( 1000 ); m_memoryRefreshTimer->start( 1000 );
auto dockTimer = new QTimer( this );
dockTimer->setSingleShot( true );
connect( dockTimer, SIGNAL( timeout() ), this, SLOT( slotWorkaroundForQwtDockWidgets() ) );
dockTimer->start( 1000 );
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -316,7 +311,6 @@ void RiuMainWindow::closeEvent( QCloseEvent* event )
} }
} }
this->saveWinGeoAndDockToolBarLayout(); this->saveWinGeoAndDockToolBarLayout();
this->hideAllDockWidgets();
QMainWindow::closeEvent( event ); QMainWindow::closeEvent( event );
} }
@ -754,7 +748,7 @@ void RiuMainWindow::createDockPanels()
for ( int i = 0; i < nTreeViews; i++ ) for ( int i = 0; i < nTreeViews; i++ )
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( treeViewTitles[i], this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( treeViewTitles[i], dockManager() );
dockWidget->setObjectName( treeViewDockNames[i] ); dockWidget->setObjectName( treeViewDockNames[i] );
caf::PdmUiTreeView* projectTree = projectTreeView( i ); caf::PdmUiTreeView* projectTree = projectTreeView( i );
@ -795,14 +789,14 @@ void RiuMainWindow::createDockPanels()
// undo/redo view // undo/redo view
if ( m_undoView && RiaPreferences::current()->useUndoRedo() ) if ( m_undoView && RiaPreferences::current()->useUndoRedo() )
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Undo Stack", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Undo Stack", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::undoStackName() ); dockWidget->setObjectName( RiuDockWidgetTools::undoStackName() );
dockWidget->setWidget( m_undoView ); dockWidget->setWidget( m_undoView );
rightWidgets.push_back( dockWidget ); rightWidgets.push_back( dockWidget );
} }
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Result Plot", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Result Plot", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::resultPlotName() ); dockWidget->setObjectName( RiuDockWidgetTools::resultPlotName() );
m_resultQwtPlot = new RiuResultQwtPlot( dockWidget ); m_resultQwtPlot = new RiuResultQwtPlot( dockWidget );
dockWidget->setWidget( m_resultQwtPlot ); dockWidget->setWidget( m_resultQwtPlot );
@ -816,7 +810,7 @@ void RiuMainWindow::createDockPanels()
dockManager()->centralWidget()->dockAreaWidget() ); dockManager()->centralWidget()->dockAreaWidget() );
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Property Editor", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Property Editor", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::propertyEditorName() ); dockWidget->setObjectName( RiuDockWidgetTools::propertyEditorName() );
m_pdmUiPropertyView = new caf::PdmUiPropertyView( dockWidget ); m_pdmUiPropertyView = new caf::PdmUiPropertyView( dockWidget );
@ -826,7 +820,7 @@ void RiuMainWindow::createDockPanels()
#ifdef USE_ODB_API #ifdef USE_ODB_API
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Mohr's Circle Plot", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Mohr's Circle Plot", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::mohrsCirclePlotName() ); dockWidget->setObjectName( RiuDockWidgetTools::mohrsCirclePlotName() );
m_mohrsCirclePlot = new RiuMohrsCirclePlot( dockWidget ); m_mohrsCirclePlot = new RiuMohrsCirclePlot( dockWidget );
dockWidget->setWidget( m_mohrsCirclePlot ); dockWidget->setWidget( m_mohrsCirclePlot );
@ -835,7 +829,7 @@ void RiuMainWindow::createDockPanels()
#endif #endif
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Relative Permeability Plot", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Relative Permeability Plot", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::relPermPlotName() ); dockWidget->setObjectName( RiuDockWidgetTools::relPermPlotName() );
m_relPermPlotPanel = new RiuRelativePermeabilityPlotPanel( dockWidget ); m_relPermPlotPanel = new RiuRelativePermeabilityPlotPanel( dockWidget );
dockWidget->setWidget( m_relPermPlotPanel ); dockWidget->setWidget( m_relPermPlotPanel );
@ -843,7 +837,7 @@ void RiuMainWindow::createDockPanels()
} }
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "PVT Plot", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "PVT Plot", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::pvtPlotName() ); dockWidget->setObjectName( RiuDockWidgetTools::pvtPlotName() );
m_pvtPlotPanel = new RiuPvtPlotPanel( dockWidget ); m_pvtPlotPanel = new RiuPvtPlotPanel( dockWidget );
dockWidget->setWidget( m_pvtPlotPanel ); dockWidget->setWidget( m_pvtPlotPanel );
@ -852,7 +846,7 @@ void RiuMainWindow::createDockPanels()
// result info // result info
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Result Info", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Result Info", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::resultInfoName() ); dockWidget->setObjectName( RiuDockWidgetTools::resultInfoName() );
m_resultInfoPanel = new RiuResultInfoPanel( dockWidget ); m_resultInfoPanel = new RiuResultInfoPanel( dockWidget );
dockWidget->setWidget( m_resultInfoPanel ); dockWidget->setWidget( m_resultInfoPanel );
@ -862,7 +856,7 @@ void RiuMainWindow::createDockPanels()
ads::CDockAreaWidget* procAndMsgTabs = nullptr; ads::CDockAreaWidget* procAndMsgTabs = nullptr;
// process monitor // process monitor
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Process Monitor", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Process Monitor", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::processMonitorName() ); dockWidget->setObjectName( RiuDockWidgetTools::processMonitorName() );
m_processMonitor = new RiuProcessMonitor( dockWidget ); m_processMonitor = new RiuProcessMonitor( dockWidget );
dockWidget->setWidget( m_processMonitor ); dockWidget->setWidget( m_processMonitor );
@ -870,7 +864,7 @@ void RiuMainWindow::createDockPanels()
} }
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Messages", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Messages", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::messagesName() ); dockWidget->setObjectName( RiuDockWidgetTools::messagesName() );
m_messagePanel = new RiuMessagePanel( dockWidget ); m_messagePanel = new RiuMessagePanel( dockWidget );
dockWidget->setWidget( m_messagePanel ); dockWidget->setWidget( m_messagePanel );
@ -886,8 +880,6 @@ void RiuMainWindow::createDockPanels()
for ( ads::CDockWidget* dock : widgets ) for ( ads::CDockWidget* dock : widgets )
{ {
connect( dock->toggleViewAction(), SIGNAL( triggered() ), SLOT( slotDockWidgetToggleViewActionTriggered() ) ); connect( dock->toggleViewAction(), SIGNAL( triggered() ), SLOT( slotDockWidgetToggleViewActionTriggered() ) );
dock->setVisible( true );
dock->raise();
} }
} }
@ -1761,7 +1753,7 @@ void RiuMainWindow::updateMemoryUsage()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiuMainWindow::showProcessMonitorDockPanel() void RiuMainWindow::showProcessMonitorDockPanel()
{ {
RiuDockWidgetTools::setDockWidgetVisibility( this->dockManager(), RiuDockWidgetTools::processMonitorName(), true ); RiuDockWidgetTools::showDockWidget( this->dockManager(), RiuDockWidgetTools::processMonitorName() );
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -1955,14 +1947,6 @@ void RiuMainWindow::customMenuRequested( const QPoint& pos )
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::slotWorkaroundForQwtDockWidgets()
{
RiuDockWidgetTools::workaroundForQwtDockWidgets();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -245,8 +245,6 @@ private slots:
void selectedObjectsChanged(); void selectedObjectsChanged();
void customMenuRequested( const QPoint& pos ); void customMenuRequested( const QPoint& pos );
void slotWorkaroundForQwtDockWidgets();
private: private:
void selectViewInProjectTreePreservingSubItemSelection( const Rim3dView* previousActiveReservoirView, void selectViewInProjectTreePreservingSubItemSelection( const Rim3dView* previousActiveReservoirView,
Rim3dView* activatedView ); Rim3dView* activatedView );

View File

@ -158,8 +158,6 @@ void RiuMainWindowBase::loadWinGeoAndDockToolBarLayout()
settings.beginGroup( registryFolderName() ); settings.beginGroup( registryFolderName() );
m_dockManager->loadPerspectives( settings ); m_dockManager->loadPerspectives( settings );
restoreDockWidgetVisibilities();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -189,44 +187,6 @@ void RiuMainWindowBase::saveWinGeoAndDockToolBarLayout()
settings.setValue( QString( "%1/isMaximized" ).arg( registryFolderName() ), isMaximized() ); settings.setValue( QString( "%1/isMaximized" ).arg( registryFolderName() ), isMaximized() );
settings.setValue( QString( "%1/dockLayout" ).arg( registryFolderName() ), m_dockManager->saveState( 1 ) ); settings.setValue( QString( "%1/dockLayout" ).arg( registryFolderName() ), m_dockManager->saveState( 1 ) );
if ( this->isVisible() )
{
QVariant dockWindowVisibilities = RiuDockWidgetTools::dockWidgetsVisibility( this->dockManager() );
QString key = mainWindowDockWidgetSettingsKey( registryFolderName() );
settings.setValue( key, dockWindowVisibilities );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::storeDefaultDockWidgetVisibilitiesIfRequired()
{
QSettings settings;
QString key = mainWindowDockWidgetSettingsKey( registryFolderName() );
if ( !settings.contains( key ) )
{
QVariant dockWidgetVisibilities = RiuDockWidgetTools::defaultDockWidgetVisibilities();
settings.setValue( key, dockWidgetVisibilities );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::restoreDockWidgetVisibilities()
{
// Company and appname set through QCoreApplication
QSettings settings;
QString key = mainWindowDockWidgetSettingsKey( registryFolderName() );
QVariant dockWindowVisibilities = settings.value( key );
RiuDockWidgetTools::applyDockWidgetVisibilities( this->dockManager(), dockWindowVisibilities.toMap() );
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -246,20 +206,6 @@ void RiuMainWindowBase::showWindow()
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::hideAllDockWidgets()
{
for ( auto dock : dockManager()->dockWidgetsMap() )
{
if ( dock )
{
dock->hide();
}
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -69,12 +69,8 @@ public:
RimMdiWindowGeometry windowGeometryForViewer( QWidget* viewer ); RimMdiWindowGeometry windowGeometryForViewer( QWidget* viewer );
void loadWinGeoAndDockToolBarLayout(); void loadWinGeoAndDockToolBarLayout();
void saveWinGeoAndDockToolBarLayout(); void saveWinGeoAndDockToolBarLayout();
void storeDefaultDockWidgetVisibilitiesIfRequired();
void restoreDockWidgetVisibilities();
void showWindow(); void showWindow();
void hideAllDockWidgets();
std::vector<caf::PdmUiTreeView*> projectTreeViews(); std::vector<caf::PdmUiTreeView*> projectTreeViews();
caf::PdmUiTreeView* projectTreeView( int treeId ); caf::PdmUiTreeView* projectTreeView( int treeId );
caf::PdmUiTreeView* getTreeViewWithItem( const caf::PdmUiItem* item ); caf::PdmUiTreeView* getTreeViewWithItem( const caf::PdmUiItem* item );

View File

@ -249,7 +249,6 @@ void RiuPlotMainWindow::closeEvent( QCloseEvent* event )
} }
} }
this->saveWinGeoAndDockToolBarLayout(); this->saveWinGeoAndDockToolBarLayout();
this->hideAllDockWidgets();
QMainWindow::closeEvent( event ); QMainWindow::closeEvent( event );
} }
@ -503,7 +502,7 @@ void RiuPlotMainWindow::createDockPanels()
// the project trees // the project trees
for ( int i = 0; i < nTreeViews; i++ ) for ( int i = 0; i < nTreeViews; i++ )
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( treeViewTitles[i], this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( treeViewTitles[i], dockManager() );
dockWidget->setObjectName( treeViewDockNames[i] ); dockWidget->setObjectName( treeViewDockNames[i] );
caf::PdmUiTreeView* projectTree = projectTreeView( i ); caf::PdmUiTreeView* projectTree = projectTreeView( i );
@ -543,7 +542,7 @@ void RiuPlotMainWindow::createDockPanels()
// the plot manager // the plot manager
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Plot Manager", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Plot Manager", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::summaryPlotManagerName() ); dockWidget->setObjectName( RiuDockWidgetTools::summaryPlotManagerName() );
m_summaryPlotManagerView = std::make_unique<caf::PdmUiPropertyView>( dockWidget ); m_summaryPlotManagerView = std::make_unique<caf::PdmUiPropertyView>( dockWidget );
@ -561,7 +560,7 @@ void RiuPlotMainWindow::createDockPanels()
// the undo stack // the undo stack
if ( m_undoView && RiaPreferences::current()->useUndoRedo() ) if ( m_undoView && RiaPreferences::current()->useUndoRedo() )
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Undo Stack", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Undo Stack", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::plotMainWindowUndoStackName() ); dockWidget->setObjectName( RiuDockWidgetTools::plotMainWindowUndoStackName() );
dockWidget->setWidget( m_undoView ); dockWidget->setWidget( m_undoView );
rightWidgets.push_back( dockWidget ); rightWidgets.push_back( dockWidget );
@ -575,7 +574,7 @@ void RiuPlotMainWindow::createDockPanels()
// the property editor // the property editor
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Property Editor", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Property Editor", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::plotMainWindowPropertyEditorName() ); dockWidget->setObjectName( RiuDockWidgetTools::plotMainWindowPropertyEditorName() );
m_pdmUiPropertyView = std::make_unique<caf::PdmUiPropertyView>( dockWidget ); m_pdmUiPropertyView = std::make_unique<caf::PdmUiPropertyView>( dockWidget );
@ -585,7 +584,7 @@ void RiuPlotMainWindow::createDockPanels()
// the log message view // the log message view
{ {
ads::CDockWidget* dockWidget = new ads::CDockWidget( "Messages", this ); ads::CDockWidget* dockWidget = new ads::CDockWidget( "Messages", dockManager() );
dockWidget->setObjectName( RiuDockWidgetTools::plotMainWindowMessagesName() ); dockWidget->setObjectName( RiuDockWidgetTools::plotMainWindowMessagesName() );
m_messagePanel = new RiuMessagePanel( dockWidget ); m_messagePanel = new RiuMessagePanel( dockWidget );
dockWidget->setWidget( m_messagePanel ); dockWidget->setWidget( m_messagePanel );
@ -602,8 +601,6 @@ void RiuPlotMainWindow::createDockPanels()
for ( ads::CDockWidget* dock : widgets ) for ( ads::CDockWidget* dock : widgets )
{ {
connect( dock->toggleViewAction(), SIGNAL( triggered() ), SLOT( slotDockWidgetToggleViewActionTriggered() ) ); connect( dock->toggleViewAction(), SIGNAL( triggered() ), SLOT( slotDockWidgetToggleViewActionTriggered() ) );
dock->setVisible( true );
dock->raise();
} }
} }