#4312 Move handleMdiWindowClosed call from widget destructors to MdiSubWindow closeEvent

* This way the mdi window still exists at the time of removal and we can handle the removal orderly
This commit is contained in:
Gaute Lindkvist
2019-04-16 10:41:03 +02:00
parent e41f8ec149
commit e0bbda85d9
14 changed files with 59 additions and 98 deletions

View File

@@ -98,41 +98,25 @@ void RiuMdiSubWindow::closeEvent(QCloseEvent* event)
{
QWidget* mainWidget = widget();
RimViewWindow* viewWindow = RiuInterfaceToViewWindow::viewWindowFromWidget(mainWidget);
if (viewWindow)
{
viewWindow->setMdiWindowGeometry(windowGeometry());
}
else
RimViewWindow* viewWindow = RiuInterfaceToViewWindow::viewWindowFromWidget(mainWidget);
if (!viewWindow)
{
RiuViewer* viewer = mainWidget->findChild<RiuViewer*>();
if (viewer)
{
viewer->ownerReservoirView()->setMdiWindowGeometry(windowGeometry());
viewWindow = viewer->ownerViewWindow();
}
}
RiuMainWindowBase* windowToTile = nullptr;
if (window() == RiaApplication::instance()->mainWindow())
if (viewWindow)
{
if (RiaApplication::instance()->mainWindow()->subWindowsAreTiled())
{
windowToTile = RiaApplication::instance()->mainWindow();
}
viewWindow->setMdiWindowGeometry(windowGeometry());
viewWindow->handleMdiWindowClosed();
event->accept();
}
else if (window() == RiaApplication::instance()->mainPlotWindow())
else
{
if (RiaApplication::instance()->mainPlotWindow()->subWindowsAreTiled())
{
windowToTile = RiaApplication::instance()->mainPlotWindow();
}
}
QMdiSubWindow::closeEvent(event);
if(windowToTile)
{
windowToTile->tileSubWindows();
QMdiSubWindow::closeEvent(event);
}
}