Fix MDI Subwindow creation

This commit is contained in:
Gaute Lindkvist
2020-10-07 15:00:26 +02:00
parent 3d1378d4a2
commit 55ef7fc02a
7 changed files with 46 additions and 29 deletions

View File

@@ -48,6 +48,19 @@ RiuMainWindowBase::RiuMainWindowBase()
setDockNestingEnabled( true );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QMdiSubWindow* RiuMainWindowBase::createViewWindow()
{
RiuMdiSubWindow* subWin =
new RiuMdiSubWindow( nullptr, Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint );
subWin->setAttribute( Qt::WA_DeleteOnClose ); // Make sure the contained widget is destroyed when the MDI window is
// closed
return subWin;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -349,16 +362,11 @@ void RiuMainWindowBase::slotDockWidgetToggleViewActionTriggered()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindowBase::addViewerToMdiArea( QMdiArea* mdiArea,
QWidget* viewer,
const QPoint& subWindowPos,
const QSize& subWindowSize )
void RiuMainWindowBase::initializeSubWindow( QMdiArea* mdiArea,
QMdiSubWindow* mdiSubWindow,
const QPoint& subWindowPos,
const QSize& subWindowSize )
{
RiuMdiSubWindow* subWin =
new RiuMdiSubWindow( nullptr, Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint );
subWin->setAttribute( Qt::WA_DeleteOnClose ); // Make sure the contained widget is destroyed when the MDI window is
// closed
bool initialStateTiled = subWindowsAreTiled();
bool initialStateMaximized = false;
@@ -373,28 +381,26 @@ void RiuMainWindowBase::addViewerToMdiArea( QMdiArea* mdiArea,
initialStateMaximized = true;
}
mdiArea->addSubWindow( subWin );
mdiArea->addSubWindow( mdiSubWindow );
if ( subWindowPos.x() > -1 )
{
subWin->move( subWindowPos );
mdiSubWindow->move( subWindowPos );
}
subWin->resize( subWindowSize );
mdiSubWindow->resize( subWindowSize );
if ( initialStateMaximized )
{
subWin->showMaximized();
mdiSubWindow->showMaximized();
}
else
{
subWin->showNormal();
mdiSubWindow->showNormal();
if ( initialStateTiled )
{
tileSubWindows();
}
}
subWin->setWidget( viewer );
}
//--------------------------------------------------------------------------------------------------