mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
Fix MDI Subwindow creation
This commit is contained in:
parent
3d1378d4a2
commit
55ef7fc02a
@ -23,6 +23,8 @@
|
||||
#include "RimViewWindow.h"
|
||||
#include "RiuMainWindowBase.h"
|
||||
|
||||
#include <QMdiSubWindow>
|
||||
|
||||
CAF_PDM_XML_SOURCE_INIT( RimMdiWindowController, "MdiWindowController" );
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -154,9 +156,9 @@ void RimMdiWindowController::updateViewerWidget()
|
||||
{
|
||||
if ( !viewWidget() )
|
||||
{
|
||||
QWidget* viewWidget = viewPdmObject()->createViewWidget( mainWindow );
|
||||
|
||||
mainWindow->addViewer( viewWidget, this->mdiWindowGeometry() );
|
||||
QMdiSubWindow* viewWindow = mainWindow->createViewWindow();
|
||||
QWidget* viewWidget = viewPdmObject()->createViewWidget( viewWindow );
|
||||
mainWindow->initializeViewer( viewWindow, viewWidget, this->mdiWindowGeometry() );
|
||||
|
||||
viewPdmObject()->updateViewWidgetAfterCreation();
|
||||
}
|
||||
|
@ -1118,7 +1118,7 @@ void RiuMainWindow::removeViewer( QWidget* viewer )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindow::addViewer( QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry )
|
||||
void RiuMainWindow::initializeViewer( QMdiSubWindow* subWindow, QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry )
|
||||
{
|
||||
QSize subWindowSize;
|
||||
QPoint subWindowPos( -1, -1 );
|
||||
@ -1133,7 +1133,8 @@ void RiuMainWindow::addViewer( QWidget* viewer, const RimMdiWindowGeometry& wind
|
||||
subWindowSize = QSize( 400, 400 );
|
||||
}
|
||||
|
||||
addViewerToMdiArea( m_mdiArea, viewer, subWindowPos, subWindowSize );
|
||||
initializeSubWindow( m_mdiArea, subWindow, subWindowPos, subWindowSize );
|
||||
subWindow->setWidget( viewer );
|
||||
|
||||
slotRefreshViewActions();
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ public:
|
||||
void cleanupGuiBeforeProjectClose();
|
||||
|
||||
void removeViewer( QWidget* viewer ) override;
|
||||
void addViewer( QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry ) override;
|
||||
void initializeViewer( QMdiSubWindow* subWindow, QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry ) override;
|
||||
void setActiveViewer( QWidget* subWindow ) override;
|
||||
|
||||
void setResultInfo( const QString& info ) const;
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -45,9 +45,13 @@ public:
|
||||
|
||||
virtual QString mainWindowName() = 0;
|
||||
|
||||
virtual void removeViewer( QWidget* viewer ) = 0;
|
||||
virtual void addViewer( QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry ) = 0;
|
||||
virtual void setActiveViewer( QWidget* subWindow ) = 0;
|
||||
QMdiSubWindow* createViewWindow();
|
||||
|
||||
virtual void removeViewer( QWidget* viewer ) = 0;
|
||||
virtual void initializeViewer( QMdiSubWindow* viewWindow,
|
||||
QWidget* viewWidget,
|
||||
const RimMdiWindowGeometry& windowsGeometry ) = 0;
|
||||
virtual void setActiveViewer( QWidget* subWindow ) = 0;
|
||||
|
||||
virtual QMdiSubWindow* findMdiSubWindow( QWidget* viewer ) = 0;
|
||||
|
||||
@ -81,10 +85,13 @@ public:
|
||||
|
||||
protected:
|
||||
void removeViewerFromMdiArea( QMdiArea* mdiArea, QWidget* viewer );
|
||||
void initializeSubWindow( QMdiArea* mdiArea,
|
||||
QMdiSubWindow* mdiSubWindow,
|
||||
const QPoint& subWindowPos,
|
||||
const QSize& subWindowSize );
|
||||
|
||||
protected slots:
|
||||
void slotDockWidgetToggleViewActionTriggered();
|
||||
void addViewerToMdiArea( QMdiArea* mdiArea, QWidget* viewer, const QPoint& subWindowPos, const QSize& subWindowSize );
|
||||
void slotRefreshHelpActions();
|
||||
|
||||
protected:
|
||||
|
@ -707,7 +707,7 @@ void RiuPlotMainWindow::removeViewer( QWidget* viewer )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuPlotMainWindow::addViewer( QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry )
|
||||
void RiuPlotMainWindow::initializeViewer( QMdiSubWindow* subWindow, QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry )
|
||||
{
|
||||
QSize subWindowSize;
|
||||
QPoint subWindowPos( -1, -1 );
|
||||
@ -722,7 +722,8 @@ void RiuPlotMainWindow::addViewer( QWidget* viewer, const RimMdiWindowGeometry&
|
||||
subWindowSize = QSize( 400, 400 );
|
||||
}
|
||||
|
||||
addViewerToMdiArea( m_mdiArea, viewer, subWindowPos, subWindowSize );
|
||||
initializeSubWindow( m_mdiArea, subWindow, subWindowPos, subWindowSize );
|
||||
subWindow->setWidget( viewer );
|
||||
|
||||
refreshToolbars();
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ public:
|
||||
void cleanUpTemporaryWidgets();
|
||||
|
||||
void removeViewer( QWidget* viewer ) override;
|
||||
void addViewer( QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry ) override;
|
||||
void initializeViewer( QMdiSubWindow* subWindow, QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry ) override;
|
||||
void setActiveViewer( QWidget* subWindow ) override;
|
||||
|
||||
void setDefaultWindowSize();
|
||||
|
Loading…
Reference in New Issue
Block a user