From a3c561b7e52d417f26bc8ac02dac03027af8be52 Mon Sep 17 00:00:00 2001 From: jonjenssen <69144954+jonjenssen@users.noreply.github.com> Date: Tue, 9 Aug 2022 16:40:50 +0200 Subject: [PATCH] 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. --- .../Application/RiaGuiApplication.cpp | 21 +- .../Tools/RiaRegressionTestRunner.cpp | 3 - .../RicfExportSnapshots.cpp | 2 - .../CMakeLists_files.cmake | 4 - .../RicDefaultDockConfigEclipseFeature.cpp | 54 ------ .../RicDefaultDockConfigEclipseFeature.h | 34 ---- .../RicDefaultDockConfigGeoMechFeature.cpp | 49 ----- .../RicDefaultDockConfigGeoMechFeature.h | 34 ---- .../RicShowMainWindowFeature.cpp | 2 - .../UserInterface/RiuDockWidgetTools.cpp | 180 +----------------- .../UserInterface/RiuDockWidgetTools.h | 19 +- .../UserInterface/RiuMainWindow.cpp | 38 ++-- .../UserInterface/RiuMainWindow.h | 2 - .../UserInterface/RiuMainWindowBase.cpp | 54 ------ .../UserInterface/RiuMainWindowBase.h | 4 - .../UserInterface/RiuPlotMainWindow.cpp | 13 +- 16 files changed, 24 insertions(+), 489 deletions(-) delete mode 100644 ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.cpp delete mode 100644 ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.h delete mode 100644 ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.cpp delete mode 100644 ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.h diff --git a/ApplicationLibCode/Application/RiaGuiApplication.cpp b/ApplicationLibCode/Application/RiaGuiApplication.cpp index a669d8e5ba..f858290fec 100644 --- a/ApplicationLibCode/Application/RiaGuiApplication.cpp +++ b/ApplicationLibCode/Application/RiaGuiApplication.cpp @@ -425,8 +425,7 @@ void RiaGuiApplication::initialize() // Create main windows // The plot window is created to be able to set expanded state on created objects, but hidden by default getOrCreateAndShowMainWindow(); - RiuPlotMainWindow* plotMainWindow = getOrCreateMainPlotWindow(); - plotMainWindow->hideAllDockWidgets(); + getOrCreateMainPlotWindow(); RiuGuiTheme::updateGuiTheme( m_preferences->guiTheme() ); @@ -968,7 +967,6 @@ void RiaGuiApplication::createMainWindow() m_mainWindow->setWindowTitle( "ResInsight " + platform ); m_mainWindow->setDefaultWindowSize(); m_mainWindow->setDefaultToolbarVisibility(); - m_mainWindow->storeDefaultDockWidgetVisibilitiesIfRequired(); m_mainWindow->loadWinGeoAndDockToolBarLayout(); m_mainWindow->showWindow(); } @@ -996,18 +994,12 @@ void RiaGuiApplication::createMainPlotWindow() //-------------------------------------------------------------------------------------------------- RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow() { - bool triggerReloadOfDockWidgetVisibilities = false; - if ( !m_mainPlotWindow ) { createMainPlotWindow(); m_mainPlotWindow->initializeGuiNewProjectLoaded(); loadAndUpdatePlotData(); } - else - { - triggerReloadOfDockWidgetVisibilities = !m_mainPlotWindow->isVisible(); - } if ( m_mainPlotWindow->isMinimized() ) { @@ -1022,11 +1014,6 @@ RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow() m_mainPlotWindow->raise(); m_mainPlotWindow->activateWindow(); - if ( triggerReloadOfDockWidgetVisibilities ) - { - m_mainPlotWindow->restoreDockWidgetVisibilities(); - } - return m_mainPlotWindow.get(); } @@ -1252,8 +1239,6 @@ void RiaGuiApplication::onProjectOpened() m_mainPlotWindow->show(); m_mainPlotWindow->raise(); } - - m_mainPlotWindow->restoreDockWidgetVisibilities(); } else if ( mainPlotWindow() ) { @@ -1640,8 +1625,6 @@ void RiaGuiApplication::runMultiCaseSnapshots( const QString& templateProj { if ( !m_mainWindow ) return; - m_mainWindow->hideAllDockWidgets(); - const size_t numGridFiles = gridFileNames.size(); for ( size_t i = 0; i < numGridFiles; i++ ) { @@ -1656,8 +1639,6 @@ void RiaGuiApplication::runMultiCaseSnapshots( const QString& templateProj RicSnapshotAllViewsToFileFeature::exportSnapshotOfViewsIntoFolder( snapshotFolderName ); } } - - m_mainWindow->loadWinGeoAndDockToolBarLayout(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp b/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp index f5285f52f4..0739248025 100644 --- a/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp +++ b/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp @@ -657,7 +657,6 @@ void RiaRegressionTestRunner::executeRegressionTests( const QString& regressionT RiuMainWindow* mainWnd = RiuMainWindow::instance(); if ( mainWnd ) { - mainWnd->hideAllDockWidgets(); mainWnd->statusBar()->close(); mainWnd->setDefaultWindowSize(); @@ -667,8 +666,6 @@ void RiaRegressionTestRunner::executeRegressionTests( const QString& regressionT m_rootPath = regressionTestPath; m_testFilter = testFilter; runRegressionTest(); - - mainWnd->loadWinGeoAndDockToolBarLayout(); } } diff --git a/ApplicationLibCode/CommandFileInterface/RicfExportSnapshots.cpp b/ApplicationLibCode/CommandFileInterface/RicfExportSnapshots.cpp index 137dab6268..30395974b2 100644 --- a/ApplicationLibCode/CommandFileInterface/RicfExportSnapshots.cpp +++ b/ApplicationLibCode/CommandFileInterface/RicfExportSnapshots.cpp @@ -82,7 +82,6 @@ caf::PdmScriptResponse RicfExportSnapshots::execute() RiuMainWindow* mainWnd = RiuMainWindow::instance(); CVF_ASSERT( mainWnd ); - mainWnd->hideAllDockWidgets(); RiaGuiApplication::instance()->processEvents(); QString absolutePathToSnapshotDir = @@ -134,7 +133,6 @@ caf::PdmScriptResponse RicfExportSnapshots::execute() fileSuffix ); } - mainWnd->loadWinGeoAndDockToolBarLayout(); RiaGuiApplication::instance()->processEvents(); return caf::PdmScriptResponse(); diff --git a/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake b/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake index 3be6c63f93..aed4c8023a 100644 --- a/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake +++ b/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake @@ -15,8 +15,6 @@ set(SOURCE_GROUP_HEADER_FILES ${CMAKE_CURRENT_LIST_DIR}/RicLaunchRegressionTestsFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicRunCommandFileFeature.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}/RicSaveProjectNoGlobalPathsFeature.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}/RicRunCommandFileFeature.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}/RicSaveProjectNoGlobalPathsFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicShowClassNamesFeature.cpp diff --git a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.cpp b/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.cpp deleted file mode 100644 index edc5122cf8..0000000000 --- a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.cpp +++ /dev/null @@ -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 -// for more details. -// -///////////////////////////////////////////////////////////////////////////////// - -#include "RicDefaultDockConfigEclipseFeature.h" - -#include "RiuDockWidgetTools.h" - -#include - -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 ); -} diff --git a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.h b/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.h deleted file mode 100644 index fdf62764ce..0000000000 --- a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigEclipseFeature.h +++ /dev/null @@ -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 -// 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; -}; diff --git a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.cpp b/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.cpp deleted file mode 100644 index f134e9cf55..0000000000 --- a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.cpp +++ /dev/null @@ -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 -// for more details. -// -///////////////////////////////////////////////////////////////////////////////// - -#include "RicDefaultDockConfigGeoMechFeature.h" - -#include "RiuDockWidgetTools.h" - -#include - -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)" ); -} diff --git a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.h b/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.h deleted file mode 100644 index afab0a0992..0000000000 --- a/ApplicationLibCode/Commands/ApplicationCommands/RicDefaultDockConfigGeoMechFeature.h +++ /dev/null @@ -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 -// 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; -}; diff --git a/ApplicationLibCode/Commands/ApplicationCommands/RicShowMainWindowFeature.cpp b/ApplicationLibCode/Commands/ApplicationCommands/RicShowMainWindowFeature.cpp index 5defd8c9ac..28f6176390 100644 --- a/ApplicationLibCode/Commands/ApplicationCommands/RicShowMainWindowFeature.cpp +++ b/ApplicationLibCode/Commands/ApplicationCommands/RicShowMainWindowFeature.cpp @@ -46,8 +46,6 @@ void RicShowMainWindowFeature::showMainWindow() } mainWnd->raise(); - - mainWnd->restoreDockWidgetVisibilities(); } else { diff --git a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp index f8c8009759..cb40ce9f9f 100644 --- a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp +++ b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp @@ -198,50 +198,6 @@ QString RiuDockWidgetTools::messagesName() return "dockMessages"; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QMap RiuDockWidgetTools::widgetVisibilitiesForEclipse() -{ - QMap 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 RiuDockWidgetTools::widgetVisibilitiesForGeoMech() -{ - QMap 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; - - 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 ) + auto dw = findDockWidget( dockManager, dockWidgetName ); + if ( dw ) { - dockWidget->setVisible( isVisible ); - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QVariant RiuDockWidgetTools::dockWidgetsVisibility( const ads::CDockManager* dockManager ) -{ - QMap 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& 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 ); - } + dw->show(); + dw->raise(); } } diff --git a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h index b0da92517d..412f0468b8 100644 --- a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h +++ b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h @@ -68,22 +68,7 @@ public: static QAction* toggleActionForWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName ); - static QVariant dockWidgetsVisibility( const ads::CDockManager* dockManager ); - static QVariant defaultDockWidgetVisibilities(); + static ads::CDockWidget* findDockWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName ); - static void workaroundForQwtDockWidgets(); - - 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& visibilityMap ); - - static ads::CDockWidget* findDockWidget( const ads::CDockManager*, const QString& dockWidgetName ); - -private: - static QMap widgetVisibilitiesForEclipse(); - static QMap widgetVisibilitiesForGeoMech(); + static void showDockWidget( const ads::CDockManager* dockManager, const QString& dockWidgetName ); }; diff --git a/ApplicationLibCode/UserInterface/RiuMainWindow.cpp b/ApplicationLibCode/UserInterface/RiuMainWindow.cpp index c2cb5e5cb1..cf3d65e755 100644 --- a/ApplicationLibCode/UserInterface/RiuMainWindow.cpp +++ b/ApplicationLibCode/UserInterface/RiuMainWindow.cpp @@ -163,11 +163,6 @@ RiuMainWindow::RiuMainWindow() m_memoryRefreshTimer = new QTimer( this ); connect( m_memoryRefreshTimer, SIGNAL( timeout() ), this, SLOT( updateMemoryUsage() ) ); 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->hideAllDockWidgets(); QMainWindow::closeEvent( event ); } @@ -754,7 +748,7 @@ void RiuMainWindow::createDockPanels() 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] ); caf::PdmUiTreeView* projectTree = projectTreeView( i ); @@ -795,14 +789,14 @@ void RiuMainWindow::createDockPanels() // undo/redo view 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->setWidget( m_undoView ); 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() ); m_resultQwtPlot = new RiuResultQwtPlot( dockWidget ); dockWidget->setWidget( m_resultQwtPlot ); @@ -816,7 +810,7 @@ void RiuMainWindow::createDockPanels() 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() ); m_pdmUiPropertyView = new caf::PdmUiPropertyView( dockWidget ); @@ -826,7 +820,7 @@ void RiuMainWindow::createDockPanels() #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() ); m_mohrsCirclePlot = new RiuMohrsCirclePlot( dockWidget ); dockWidget->setWidget( m_mohrsCirclePlot ); @@ -835,7 +829,7 @@ void RiuMainWindow::createDockPanels() #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() ); m_relPermPlotPanel = new RiuRelativePermeabilityPlotPanel( dockWidget ); 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() ); m_pvtPlotPanel = new RiuPvtPlotPanel( dockWidget ); dockWidget->setWidget( m_pvtPlotPanel ); @@ -852,7 +846,7 @@ void RiuMainWindow::createDockPanels() // result info { - ads::CDockWidget* dockWidget = new ads::CDockWidget( "Result Info", this ); + ads::CDockWidget* dockWidget = new ads::CDockWidget( "Result Info", dockManager() ); dockWidget->setObjectName( RiuDockWidgetTools::resultInfoName() ); m_resultInfoPanel = new RiuResultInfoPanel( dockWidget ); dockWidget->setWidget( m_resultInfoPanel ); @@ -862,7 +856,7 @@ void RiuMainWindow::createDockPanels() ads::CDockAreaWidget* procAndMsgTabs = nullptr; // process monitor { - ads::CDockWidget* dockWidget = new ads::CDockWidget( "Process Monitor", this ); + ads::CDockWidget* dockWidget = new ads::CDockWidget( "Process Monitor", dockManager() ); dockWidget->setObjectName( RiuDockWidgetTools::processMonitorName() ); m_processMonitor = new RiuProcessMonitor( dockWidget ); 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() ); m_messagePanel = new RiuMessagePanel( dockWidget ); dockWidget->setWidget( m_messagePanel ); @@ -886,8 +880,6 @@ void RiuMainWindow::createDockPanels() for ( ads::CDockWidget* dock : widgets ) { connect( dock->toggleViewAction(), SIGNAL( triggered() ), SLOT( slotDockWidgetToggleViewActionTriggered() ) ); - dock->setVisible( true ); - dock->raise(); } } @@ -1761,7 +1753,7 @@ void RiuMainWindow::updateMemoryUsage() //-------------------------------------------------------------------------------------------------- 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(); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuMainWindow.h b/ApplicationLibCode/UserInterface/RiuMainWindow.h index 9de3fcb70d..191dab32c8 100644 --- a/ApplicationLibCode/UserInterface/RiuMainWindow.h +++ b/ApplicationLibCode/UserInterface/RiuMainWindow.h @@ -245,8 +245,6 @@ private slots: void selectedObjectsChanged(); void customMenuRequested( const QPoint& pos ); - void slotWorkaroundForQwtDockWidgets(); - private: void selectViewInProjectTreePreservingSubItemSelection( const Rim3dView* previousActiveReservoirView, Rim3dView* activatedView ); diff --git a/ApplicationLibCode/UserInterface/RiuMainWindowBase.cpp b/ApplicationLibCode/UserInterface/RiuMainWindowBase.cpp index 057530167a..f2b9767248 100644 --- a/ApplicationLibCode/UserInterface/RiuMainWindowBase.cpp +++ b/ApplicationLibCode/UserInterface/RiuMainWindowBase.cpp @@ -158,8 +158,6 @@ void RiuMainWindowBase::loadWinGeoAndDockToolBarLayout() settings.beginGroup( registryFolderName() ); m_dockManager->loadPerspectives( settings ); - - restoreDockWidgetVisibilities(); } //-------------------------------------------------------------------------------------------------- @@ -189,44 +187,6 @@ void RiuMainWindowBase::saveWinGeoAndDockToolBarLayout() settings.setValue( QString( "%1/isMaximized" ).arg( registryFolderName() ), isMaximized() ); 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(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuMainWindowBase.h b/ApplicationLibCode/UserInterface/RiuMainWindowBase.h index 1c4cfa5800..5f76b7aaaf 100644 --- a/ApplicationLibCode/UserInterface/RiuMainWindowBase.h +++ b/ApplicationLibCode/UserInterface/RiuMainWindowBase.h @@ -69,12 +69,8 @@ public: RimMdiWindowGeometry windowGeometryForViewer( QWidget* viewer ); void loadWinGeoAndDockToolBarLayout(); void saveWinGeoAndDockToolBarLayout(); - void storeDefaultDockWidgetVisibilitiesIfRequired(); - void restoreDockWidgetVisibilities(); void showWindow(); - void hideAllDockWidgets(); - std::vector projectTreeViews(); caf::PdmUiTreeView* projectTreeView( int treeId ); caf::PdmUiTreeView* getTreeViewWithItem( const caf::PdmUiItem* item ); diff --git a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp index cf7efc51f8..9373757a29 100644 --- a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp +++ b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp @@ -249,7 +249,6 @@ void RiuPlotMainWindow::closeEvent( QCloseEvent* event ) } } this->saveWinGeoAndDockToolBarLayout(); - this->hideAllDockWidgets(); QMainWindow::closeEvent( event ); } @@ -503,7 +502,7 @@ void RiuPlotMainWindow::createDockPanels() // the project trees 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] ); caf::PdmUiTreeView* projectTree = projectTreeView( i ); @@ -543,7 +542,7 @@ void RiuPlotMainWindow::createDockPanels() // 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() ); m_summaryPlotManagerView = std::make_unique( dockWidget ); @@ -561,7 +560,7 @@ void RiuPlotMainWindow::createDockPanels() // the undo stack 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->setWidget( m_undoView ); rightWidgets.push_back( dockWidget ); @@ -575,7 +574,7 @@ void RiuPlotMainWindow::createDockPanels() // 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() ); m_pdmUiPropertyView = std::make_unique( dockWidget ); @@ -585,7 +584,7 @@ void RiuPlotMainWindow::createDockPanels() // the log message view { - ads::CDockWidget* dockWidget = new ads::CDockWidget( "Messages", this ); + ads::CDockWidget* dockWidget = new ads::CDockWidget( "Messages", dockManager() ); dockWidget->setObjectName( RiuDockWidgetTools::plotMainWindowMessagesName() ); m_messagePanel = new RiuMessagePanel( dockWidget ); dockWidget->setWidget( m_messagePanel ); @@ -602,8 +601,6 @@ void RiuPlotMainWindow::createDockPanels() for ( ads::CDockWidget* dock : widgets ) { connect( dock->toggleViewAction(), SIGNAL( triggered() ), SLOT( slotDockWidgetToggleViewActionTriggered() ) ); - dock->setVisible( true ); - dock->raise(); } }