#4410 Dock Window State : Create static functions instead of singleton

This commit is contained in:
Magne Sjaastad
2019-05-15 10:47:30 +02:00
parent a68650ebf8
commit f43edf3c7d
8 changed files with 149 additions and 140 deletions

View File

@@ -566,7 +566,9 @@ 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();
getOrCreateMainPlotWindow();
RiuPlotMainWindow* plotMainWindow = getOrCreateMainPlotWindow();
plotMainWindow->hideAllDockWindows();
RiaLogging::setLoggerInstance(new RiuMessagePanelLogger(m_mainWindow->messagePanel()));
RiaLogging::loggerInstance()->setLevel(RI_LL_DEBUG);
@@ -959,6 +961,11 @@ RiuMainWindow* RiaGuiApplication::getOrCreateAndShowMainWindow()
{
createMainWindow();
}
else
{
m_mainWindow->loadWinGeoAndDockToolBarLayout();
}
return m_mainWindow;
}
@@ -1023,6 +1030,7 @@ void RiaGuiApplication::createMainPlotWindow()
m_mainPlotWindow->setWindowTitle("Plots - ResInsight");
m_mainPlotWindow->setDefaultWindowSize();
m_mainPlotWindow->loadWinGeoAndDockToolBarLayout();
m_mainPlotWindow->hideAllDockWindows();
}
//--------------------------------------------------------------------------------------------------
@@ -1042,12 +1050,18 @@ void RiaGuiApplication::deleteMainPlotWindow()
//--------------------------------------------------------------------------------------------------
RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow()
{
bool triggerReloadOfDockWidgetVisibilities = false;
if (!m_mainPlotWindow)
{
createMainPlotWindow();
m_mainPlotWindow->initializeGuiNewProjectLoaded();
loadAndUpdatePlotData();
}
else
{
triggerReloadOfDockWidgetVisibilities = !m_mainPlotWindow->isVisible();
}
if (m_mainPlotWindow->isMinimized())
{
@@ -1061,6 +1075,12 @@ RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow()
m_mainPlotWindow->raise();
m_mainPlotWindow->activateWindow();
if (triggerReloadOfDockWidgetVisibilities)
{
m_mainPlotWindow->restoreDockWidgetVisibilities();
}
return m_mainPlotWindow;
}

View File

@@ -43,6 +43,8 @@ void RicShowMainWindowFeature::onActionTriggered(bool isChecked)
RiuMainWindow* mainWnd = RiuMainWindow::instance();
bool triggerReloadOfDockWindowVisibilities = !mainWnd->isVisible();
if (mainWnd->isMinimized())
{
mainWnd->showNormal();
@@ -54,6 +56,11 @@ void RicShowMainWindowFeature::onActionTriggered(bool isChecked)
}
mainWnd->raise();
if (triggerReloadOfDockWindowVisibilities)
{
mainWnd->restoreDockWidgetVisibilities();
}
}
//--------------------------------------------------------------------------------------------------

View File

@@ -31,25 +31,7 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuDockWidgetTools::RiuDockWidgetTools()
{
loadDockWidgetsState();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuDockWidgetTools* RiuDockWidgetTools::instance()
{
static RiuDockWidgetTools staticInstance;
return &staticInstance;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::projectTreeName() const
QString RiuDockWidgetTools::projectTreeName()
{
return "dockProjectTree";
}
@@ -57,7 +39,7 @@ QString RiuDockWidgetTools::projectTreeName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::propertyEditorName() const
QString RiuDockWidgetTools::propertyEditorName()
{
return "dockpropertyEditor";
}
@@ -65,7 +47,7 @@ QString RiuDockWidgetTools::propertyEditorName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::resultInfoName() const
QString RiuDockWidgetTools::resultInfoName()
{
return "dockResultInfo";
}
@@ -73,7 +55,7 @@ QString RiuDockWidgetTools::resultInfoName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::processMonitorName() const
QString RiuDockWidgetTools::processMonitorName()
{
return "dockProcessMonitor";
}
@@ -81,7 +63,7 @@ QString RiuDockWidgetTools::processMonitorName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::resultPlotName() const
QString RiuDockWidgetTools::resultPlotName()
{
return "dockResultPlot";
}
@@ -89,7 +71,7 @@ QString RiuDockWidgetTools::resultPlotName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::relPermPlotName() const
QString RiuDockWidgetTools::relPermPlotName()
{
return "dockRelPermPlot";
}
@@ -97,7 +79,7 @@ QString RiuDockWidgetTools::relPermPlotName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::pvtPlotName() const
QString RiuDockWidgetTools::pvtPlotName()
{
return "dockPvtPlot";
}
@@ -105,7 +87,7 @@ QString RiuDockWidgetTools::pvtPlotName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::mohrsCirclePlotName() const
QString RiuDockWidgetTools::mohrsCirclePlotName()
{
return "dockMohrsCirclePlot";
}
@@ -113,7 +95,7 @@ QString RiuDockWidgetTools::mohrsCirclePlotName() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::messagesName() const
QString RiuDockWidgetTools::messagesName()
{
return "dockMessages";
}
@@ -165,8 +147,8 @@ void RiuDockWidgetTools::setVisibleDockingWindowsForEclipse()
}
}
RiuDockWidgetTools::instance()->trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::relPermPlotName(), true);
RiuDockWidgetTools::instance()->trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::pvtPlotName(), true);
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::relPermPlotName(), true);
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::pvtPlotName(), true);
}
//--------------------------------------------------------------------------------------------------
@@ -176,7 +158,7 @@ void RiuDockWidgetTools::setVisibleDockingWindowsForGeoMech()
{
RiuMainWindow* mainWindow = RiuMainWindow::instance();
RiuDockWidgetTools::instance()->trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::mohrsCirclePlotName(), false);
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::mohrsCirclePlotName(), false);
{
QDockWidget* dockWidget = findDockWidget(mainWindow, RiuDockWidgetTools::relPermPlotName());
@@ -203,78 +185,57 @@ void RiuDockWidgetTools::trySetDockWidgetVisibility(const QObject* parent, const
QDockWidget* dockWidget = findDockWidget(parent, dockWidgetName);
if (dockWidget)
{
bool unifiedIsVisible = isVisible;
auto state = visibilityForWidget(dockWidgetName);
if (state != RiuDockWidgetTools::USER_DEFINED_UNKNOWN)
{
if (state == RiuDockWidgetTools::USER_DEFINED_ON)
{
unifiedIsVisible = true;
}
else if (state == RiuDockWidgetTools::USER_DEFINED_OFF)
{
unifiedIsVisible = false;
}
}
dockWidget->setVisible(unifiedIsVisible);
dockWidget->setVisible(isVisible);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuDockWidgetTools::UserDefinedVisibility RiuDockWidgetTools::visibilityForWidget(const QString& objectName)
QVariant RiuDockWidgetTools::storeDockWidgetsVisibility(const QObject* parent)
{
RiuDockWidgetTools::UserDefinedVisibility visibility = USER_DEFINED_UNKNOWN;
QMap<QString, QVariant> widgetVisibility;
auto windowStateIt = m_userDefinedDockWidgetVisibility.find(objectName);
if (windowStateIt != m_userDefinedDockWidgetVisibility.end())
QList<QDockWidget*> dockWidgets = parent->findChildren<QDockWidget*>();
for (QDockWidget* dock : dockWidgets)
{
bool isVisible = windowStateIt.value().toBool();
if (isVisible)
if (dock)
{
visibility = USER_DEFINED_ON;
}
else
{
visibility = USER_DEFINED_OFF;
bool isVisible = dock->isVisible();
widgetVisibility[dock->objectName()] = isVisible;
// qDebug() << "Store " << dock->objectName() << " : " << (isVisible ? "visible" : "not visible");
}
}
return visibility;
return QVariant(widgetVisibility);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::setDockWidgetVisibility(const QString& dockingWindowName, bool isVisible)
void RiuDockWidgetTools::restoreDockWidgetsVisibility(const QObject* parent, QVariant widgetVisibilities)
{
m_userDefinedDockWidgetVisibility[dockingWindowName] = isVisible;
}
QMap<QString, QVariant> widgetVisibilityMap = widgetVisibilities.toMap();
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::loadDockWidgetsState()
{
// Company and appname set through QCoreApplication
QSettings settings;
QList<QDockWidget*> dockWidgets = parent->findChildren<QDockWidget*>();
m_userDefinedDockWidgetVisibility = settings.value("dockWindowStates").toMap();
}
for (QDockWidget* dock : dockWidgets)
{
if (dock)
{
auto widgetVisibility = widgetVisibilityMap.find(dock->objectName());
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDockWidgetTools::saveDockWidgetsState()
{
// Company and appname set through QCoreApplication
QSettings settings;
if (widgetVisibility != widgetVisibilityMap.end())
{
bool isVisible = widgetVisibility.value().toBool();
dock->setVisible(isVisible);
QVariant v(m_userDefinedDockWidgetVisibility);
settings.setValue("dockWindowStates", v);
// qDebug() << "Restore " << dock->objectName() << " : " << (isVisible ? "visible" : "not visible");
}
}
}
}
//--------------------------------------------------------------------------------------------------

View File

@@ -30,45 +30,32 @@ class Rim3dView;
//==================================================================================================
//
//
//
//
//==================================================================================================
class RiuDockWidgetTools
{
public:
static RiuDockWidgetTools* instance();
static QString projectTreeName();
static QString propertyEditorName();
static QString resultInfoName();
static QString processMonitorName();
static QString resultPlotName();
static QString relPermPlotName();
static QString pvtPlotName();
static QString messagesName();
static QString mohrsCirclePlotName();
QString projectTreeName() const;
QString propertyEditorName() const;
QString resultInfoName() const;
QString processMonitorName() const;
QString resultPlotName() const;
QString relPermPlotName() const;
QString pvtPlotName() const;
QString messagesName() const;
QString mohrsCirclePlotName() const;
static QAction* toggleActionForWidget(const QObject* parent, const QString& dockWidgetName);
QAction* toggleActionForWidget(const QObject* parent, const QString& dockWidgetName);
void setDockWidgetVisibility(const QString& dockWidgetName, bool isVisible);
void changeDockWidgetVisibilityBasedOnView(Rim3dView* view);
void saveDockWidgetsState();
static QVariant storeDockWidgetsVisibility(const QObject* parent);
static void restoreDockWidgetsVisibility(const QObject* parent, QVariant widgetVisibilities);
private:
enum UserDefinedVisibility
{
USER_DEFINED_ON,
USER_DEFINED_OFF,
USER_DEFINED_UNKNOWN
};
static void changeDockWidgetVisibilityBasedOnView(Rim3dView* view);
RiuDockWidgetTools();
void setVisibleDockingWindowsForEclipse();
void setVisibleDockingWindowsForGeoMech();
void loadDockWidgetsState();
UserDefinedVisibility visibilityForWidget(const QString& dockWidgetName);
static QDockWidget* findDockWidget(const QObject* parent, const QString& dockWidgetName);
void trySetDockWidgetVisibility(const QObject* parent, const QString& dockWidgetName, bool isVisible);
private:
QMap<QString, QVariant> m_userDefinedDockWidgetVisibility;
static void setVisibleDockingWindowsForEclipse();
static void setVisibleDockingWindowsForGeoMech();
static QDockWidget* findDockWidget(const QObject* parent, const QString& dockWidgetName);
static void trySetDockWidgetVisibility(const QObject* parent, const QString& dockWidgetName, bool isVisible);
};

View File

@@ -270,10 +270,10 @@ void RiuMainWindow::cleanupGuiBeforeProjectClose()
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::closeEvent(QCloseEvent* event)
{
RiaGuiApplication* app = RiaGuiApplication::instance();
this->saveWinGeoAndDockToolBarLayout();
this->hideAllDockWindows();
RiaGuiApplication* app = RiaGuiApplication::instance();
if (app->isMainPlotWindowVisible())
{
event->ignore(); // Make Qt think we don't do anything, otherwise it closes the window.
@@ -666,11 +666,9 @@ void RiuMainWindow::createToolBars()
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::createDockPanels()
{
auto dwt = RiuDockWidgetTools::instance();
{
QDockWidget* dockWidget = new QDockWidget("Project Tree", this);
dockWidget->setObjectName(dwt->projectTreeName());
dockWidget->setObjectName(RiuDockWidgetTools::projectTreeName());
dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
m_projectTreeView = new caf::PdmUiTreeView(this);
@@ -712,7 +710,7 @@ void RiuMainWindow::createDockPanels()
{
QDockWidget* dockWidget = new QDockWidget("Property Editor", this);
dockWidget->setObjectName(dwt->propertyEditorName());
dockWidget->setObjectName(RiuDockWidgetTools::propertyEditorName());
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
m_pdmUiPropertyView = new caf::PdmUiPropertyView(dockWidget);
@@ -723,7 +721,7 @@ void RiuMainWindow::createDockPanels()
{
QDockWidget* dockWidget = new QDockWidget("Result Info", this);
dockWidget->setObjectName(dwt->resultInfoName());
dockWidget->setObjectName(RiuDockWidgetTools::resultInfoName());
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
m_resultInfoPanel = new RiuResultInfoPanel(dockWidget);
dockWidget->setWidget(m_resultInfoPanel);
@@ -733,7 +731,7 @@ void RiuMainWindow::createDockPanels()
{
QDockWidget* dockWidget = new QDockWidget("Process Monitor", this);
dockWidget->setObjectName(dwt->processMonitorName());
dockWidget->setObjectName(RiuDockWidgetTools::processMonitorName());
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
m_processMonitor = new RiuProcessMonitor(dockWidget);
dockWidget->setWidget(m_processMonitor);
@@ -744,7 +742,7 @@ void RiuMainWindow::createDockPanels()
{
QDockWidget* dockWidget = new QDockWidget("Result Plot", this);
dockWidget->setObjectName(dwt->resultPlotName());
dockWidget->setObjectName(RiuDockWidgetTools::resultPlotName());
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
m_resultQwtPlot = new RiuResultQwtPlot(dockWidget);
dockWidget->setWidget(m_resultQwtPlot);
@@ -756,7 +754,7 @@ void RiuMainWindow::createDockPanels()
#ifdef USE_ODB_API
{
QDockWidget* dockWidget = new QDockWidget("Mohr's Circle Plot", this);
dockWidget->setObjectName(dwt->mohrsCirclePlotName());
dockWidget->setObjectName(RiuDockWidgetTools::mohrsCirclePlotName());
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
m_mohrsCirclePlot = new RiuMohrsCirclePlot(dockWidget);
dockWidget->setWidget(m_mohrsCirclePlot);
@@ -770,7 +768,7 @@ void RiuMainWindow::createDockPanels()
{
QDockWidget* dockWidget = new QDockWidget("Relative Permeability Plot", this);
dockWidget->setObjectName(dwt->relPermPlotName());
dockWidget->setObjectName(RiuDockWidgetTools::relPermPlotName());
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
m_relPermPlotPanel = new RiuRelativePermeabilityPlotPanel(dockWidget);
dockWidget->setWidget(m_relPermPlotPanel);
@@ -781,7 +779,7 @@ void RiuMainWindow::createDockPanels()
{
QDockWidget* dockWidget = new QDockWidget("PVT Plot", this);
dockWidget->setObjectName(dwt->pvtPlotName());
dockWidget->setObjectName(RiuDockWidgetTools::pvtPlotName());
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
m_pvtPlotPanel = new RiuPvtPlotPanel(dockWidget);
dockWidget->setWidget(m_pvtPlotPanel);
@@ -792,7 +790,7 @@ void RiuMainWindow::createDockPanels()
{
QDockWidget* dockWidget = new QDockWidget("Messages", this);
dockWidget->setObjectName(dwt->messagesName());
dockWidget->setObjectName(RiuDockWidgetTools::messagesName());
m_messagePanel = new RiuMessagePanel(dockWidget);
dockWidget->setWidget(m_messagePanel);
addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
@@ -1349,8 +1347,7 @@ void appendToggleActionForDockingWidget(QMenu* menu, QWidget* parent, const QStr
{
if (menu)
{
auto dwt = RiuDockWidgetTools::instance();
QAction* action = dwt->toggleActionForWidget(parent, dockWidgetName);
QAction* action = RiuDockWidgetTools::toggleActionForWidget(parent, dockWidgetName);
if (action)
{
// Some dock windows are depending on configuration (mohrs circle plot), so do not assert they exist
@@ -1372,20 +1369,18 @@ void RiuMainWindow::slotBuildWindowActions()
m_windowMenu->addSeparator();
}
auto dwt = RiuDockWidgetTools::instance();
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->projectTreeName());
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->propertyEditorName());
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->messagesName());
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->processMonitorName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::projectTreeName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::propertyEditorName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::messagesName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::processMonitorName());
m_windowMenu->addSeparator();
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->resultInfoName());
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->resultPlotName());
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->relPermPlotName());
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->pvtPlotName());
appendToggleActionForDockingWidget(m_windowMenu, this, dwt->mohrsCirclePlotName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::resultInfoName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::resultPlotName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::relPermPlotName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::pvtPlotName());
appendToggleActionForDockingWidget(m_windowMenu, this, RiuDockWidgetTools::mohrsCirclePlotName());
m_windowMenu->addSeparator();
QAction* cascadeWindowsAction = new QAction("Cascade Windows", this);
@@ -1780,7 +1775,7 @@ void RiuMainWindow::updateMemoryUsage()
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::showProcessMonitorDockPanel()
{
showDockPanel(RiuDockWidgetTools::instance()->processMonitorName());
showDockPanel(RiuDockWidgetTools::processMonitorName());
}
//--------------------------------------------------------------------------------------------------

View File

@@ -83,6 +83,8 @@ void RiuMainWindowBase::loadWinGeoAndDockToolBarLayout()
}
}
}
restoreDockWidgetVisibilities();
}
//--------------------------------------------------------------------------------------------------
@@ -100,6 +102,24 @@ void RiuMainWindowBase::saveWinGeoAndDockToolBarLayout()
settings.setValue(QString("%1/dockAndToolBarLayout").arg(registryFolderName()), layout);
settings.setValue(QString("%1/isMaximized").arg(registryFolderName()), isMaximized());
if (this->isVisible())
{
QVariant dockWindowVisibilities = RiuDockWidgetTools::storeDockWidgetsVisibility(this);
settings.setValue(QString("%1/dockWindowVisibilies").arg(registryFolderName()), dockWindowVisibilities);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::restoreDockWidgetVisibilities()
{
// Company and appname set through QCoreApplication
QSettings settings;
QVariant dockWindowVisibilities = settings.value(QString("%1/dockWindowVisibilies").arg(registryFolderName()));
RiuDockWidgetTools::restoreDockWidgetsVisibility(this, dockWindowVisibilities);
}
//--------------------------------------------------------------------------------------------------
@@ -119,6 +139,22 @@ void RiuMainWindowBase::showWindow()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::closeAllDockWidgets()
{
QList<QDockWidget*> dockWidgets = findChildren<QDockWidget*>();
for (QDockWidget* dock : dockWidgets)
{
if (dock)
{
dock->hide();
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -225,8 +261,6 @@ void RiuMainWindowBase::slotDockWidgetToggleViewActionTriggered()
// Raise the dock widget to make it visible if the widget is part of a tab widget
dockWidget->raise();
}
RiuDockWidgetTools::instance()->setDockWidgetVisibility(dockWidget->objectName(), dockWidget->isVisible());
}
}

View File

@@ -56,8 +56,11 @@ public:
RimMdiWindowGeometry windowGeometryForViewer(QWidget* viewer);
void loadWinGeoAndDockToolBarLayout();
void saveWinGeoAndDockToolBarLayout();
void restoreDockWidgetVisibilities();
void showWindow();
void closeAllDockWidgets();
caf::PdmUiTreeView* projectTreeView() { return m_projectTreeView;}
void setExpanded(const caf::PdmUiItem* uiItem, bool expanded = true);

View File

@@ -180,6 +180,8 @@ void RiuPlotMainWindow::closeEvent(QCloseEvent* event)
{
this->saveWinGeoAndDockToolBarLayout();
this->hideAllDockWindows();
RiaGuiApplication* app = RiaGuiApplication::instance();
if (app->isMain3dWindowVisible())