From 515ed8a649bf5d46c4597f81988b9cab13113a2a Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 26 Apr 2018 20:40:06 +0200 Subject: [PATCH] #2798 Dock Widgets : Store dock widget state when closed by "x" --- .../UserInterface/RiuMainWindow.cpp | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/ApplicationCode/UserInterface/RiuMainWindow.cpp b/ApplicationCode/UserInterface/RiuMainWindow.cpp index 9e722848a3..c1d67c7fc0 100644 --- a/ApplicationCode/UserInterface/RiuMainWindow.cpp +++ b/ApplicationCode/UserInterface/RiuMainWindow.cpp @@ -556,17 +556,35 @@ void RiuMainWindow::createToolBars() refreshDrawStyleActions(); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +class RiuDockWidget : public QDockWidget +{ +public: + explicit RiuDockWidget(const QString& title, QWidget* parent = 0, Qt::WindowFlags flags = 0) + : QDockWidget(title, parent, flags) + { + } + + void closeEvent(QCloseEvent* event) override + { + // This event is called when the user clicks the "x" in upper right corner to close the dock widget + RiuDockWidgetTools::instance()->setDockWidgetVisibility(objectName(), false); + + QDockWidget::closeEvent(event); + } +}; //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- - void RiuMainWindow::createDockPanels() { auto dwt = RiuDockWidgetTools::instance(); { - QDockWidget* dockWidget = new QDockWidget("Project Tree", this); + QDockWidget* dockWidget = new RiuDockWidget("Project Tree", this); dockWidget->setObjectName(dwt->projectTreeName()); dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas); @@ -604,7 +622,7 @@ void RiuMainWindow::createDockPanels() QDockWidget* mohrsCirclePlotDock = nullptr; { - QDockWidget* dockWidget = new QDockWidget("Property Editor", this); + QDockWidget* dockWidget = new RiuDockWidget("Property Editor", this); dockWidget->setObjectName(dwt->propertyEditorName()); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); @@ -615,7 +633,7 @@ void RiuMainWindow::createDockPanels() } { - QDockWidget* dockWidget = new QDockWidget("Result Info", this); + QDockWidget* dockWidget = new RiuDockWidget("Result Info", this); dockWidget->setObjectName(dwt->resultInfoName()); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); m_resultInfoPanel = new RiuResultInfoPanel(dockWidget); @@ -625,7 +643,7 @@ void RiuMainWindow::createDockPanels() } { - QDockWidget* dockWidget = new QDockWidget("Process Monitor", this); + QDockWidget* dockWidget = new RiuDockWidget("Process Monitor", this); dockWidget->setObjectName(dwt->processMonitorName()); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); m_processMonitor = new RiuProcessMonitor(dockWidget); @@ -636,7 +654,7 @@ void RiuMainWindow::createDockPanels() } { - QDockWidget* dockWidget = new QDockWidget("Result Plot", this); + QDockWidget* dockWidget = new RiuDockWidget("Result Plot", this); dockWidget->setObjectName(dwt->resultPlotName()); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); m_resultQwtPlot = new RiuResultQwtPlot(dockWidget); @@ -648,7 +666,7 @@ void RiuMainWindow::createDockPanels() #ifdef USE_ODB_API { - QDockWidget* dockWidget = new QDockWidget("Mohr's Circle Plot", this); + QDockWidget* dockWidget = new RiuDockWidget("Mohr's Circle Plot", this); dockWidget->setObjectName(dwt->mohrsCirclePlotName()); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); m_mohrsCirclePlot = new RiuMohrsCirclePlot(dockWidget); @@ -662,7 +680,7 @@ void RiuMainWindow::createDockPanels() #endif { - QDockWidget* dockWidget = new QDockWidget("Relative Permeability Plot", this); + QDockWidget* dockWidget = new RiuDockWidget("Relative Permeability Plot", this); dockWidget->setObjectName(dwt->relPermPlotName()); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); m_relPermPlotPanel = new RiuRelativePermeabilityPlotPanel(dockWidget); @@ -673,7 +691,7 @@ void RiuMainWindow::createDockPanels() } { - QDockWidget* dockWidget = new QDockWidget("PVT Plot", this); + QDockWidget* dockWidget = new RiuDockWidget("PVT Plot", this); dockWidget->setObjectName(dwt->pvtPlotName()); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); m_pvtPlotPanel = new RiuPvtPlotPanel(dockWidget); @@ -684,7 +702,7 @@ void RiuMainWindow::createDockPanels() } { - QDockWidget* dockWidget = new QDockWidget("Messages", this); + QDockWidget* dockWidget = new RiuDockWidget("Messages", this); dockWidget->setObjectName(dwt->messagesName()); m_messagePanel = new RiuMessagePanel(dockWidget); dockWidget->setWidget(m_messagePanel);