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