mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Fix tiling issues for plot window
* Fix tiling for plot windows Remove activation history restore related to a bug that was fixed in 5.12 https://bugreports.qt.io/browse/QTBUG-51761
This commit is contained in:
parent
647e248e04
commit
3b67719972
@ -35,7 +35,7 @@ CAF_CMD_SOURCE_INIT( RicTileWindowsFeature, "RicTileWindowsFeature" );
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicTileWindowsFeature::applyTiling( RiuMainWindowBase* mainWindow, RiaDefines::WindowTileMode requestedTileMode )
|
void RicTileWindowsFeature::applyTiling( RiuMainWindow* mainWindow, RiaDefines::WindowTileMode requestedTileMode )
|
||||||
{
|
{
|
||||||
auto mode = requestedTileMode;
|
auto mode = requestedTileMode;
|
||||||
|
|
||||||
@ -96,6 +96,25 @@ bool RicTileWindowsFeature::isCommandChecked()
|
|||||||
|
|
||||||
CAF_CMD_SOURCE_INIT( RicTilePlotWindowsFeature, "RicTilePlotWindowsFeature" );
|
CAF_CMD_SOURCE_INIT( RicTilePlotWindowsFeature, "RicTilePlotWindowsFeature" );
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicTilePlotWindowsFeature::applyTiling( RiuPlotMainWindow* mainWindow, RiaDefines::WindowTileMode requestedTileMode )
|
||||||
|
{
|
||||||
|
auto mode = requestedTileMode;
|
||||||
|
|
||||||
|
// If requested mode is set, reset tiling mode to undefined
|
||||||
|
if ( RimProject::current()->subWindowsTileModePlotWindow() == requestedTileMode )
|
||||||
|
mode = RiaDefines::WindowTileMode::UNDEFINED;
|
||||||
|
|
||||||
|
RimProject::current()->setSubWindowsTileModePlotWindow( mode );
|
||||||
|
|
||||||
|
if ( mainWindow )
|
||||||
|
{
|
||||||
|
mainWindow->mdiArea()->applyTiling();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -118,7 +137,7 @@ void RicTilePlotWindowsFeature::onActionTriggered( bool isChecked )
|
|||||||
this->disableModelChangeContribution();
|
this->disableModelChangeContribution();
|
||||||
|
|
||||||
auto* mainWindow = RiuPlotMainWindow::instance();
|
auto* mainWindow = RiuPlotMainWindow::instance();
|
||||||
RicTileWindowsFeature::applyTiling( mainWindow, RiaDefines::WindowTileMode::DEFAULT );
|
RicTilePlotWindowsFeature::applyTiling( mainWindow, RiaDefines::WindowTileMode::DEFAULT );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -257,7 +276,7 @@ void RicTilePlotWindowsVerticallyFeature::onActionTriggered( bool isChecked )
|
|||||||
this->disableModelChangeContribution();
|
this->disableModelChangeContribution();
|
||||||
|
|
||||||
auto* mainWindow = RiuPlotMainWindow::instance();
|
auto* mainWindow = RiuPlotMainWindow::instance();
|
||||||
RicTileWindowsFeature::applyTiling( mainWindow, RiaDefines::WindowTileMode::VERTICAL );
|
RicTilePlotWindowsFeature::applyTiling( mainWindow, RiaDefines::WindowTileMode::VERTICAL );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -301,7 +320,7 @@ void RicTilePlotWindowsHorizontallyFeature::onActionTriggered( bool isChecked )
|
|||||||
this->disableModelChangeContribution();
|
this->disableModelChangeContribution();
|
||||||
|
|
||||||
auto* mainWindow = RiuPlotMainWindow::instance();
|
auto* mainWindow = RiuPlotMainWindow::instance();
|
||||||
RicTileWindowsFeature::applyTiling( mainWindow, RiaDefines::WindowTileMode::HORIZONTAL );
|
RicTilePlotWindowsFeature::applyTiling( mainWindow, RiaDefines::WindowTileMode::HORIZONTAL );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -23,7 +23,8 @@
|
|||||||
|
|
||||||
#include "cafCmdFeature.h"
|
#include "cafCmdFeature.h"
|
||||||
|
|
||||||
class RiuMainWindowBase;
|
class RiuMainWindow;
|
||||||
|
class RiuPlotMainWindow;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@ -33,7 +34,7 @@ class RicTileWindowsFeature : public caf::CmdFeature
|
|||||||
CAF_CMD_HEADER_INIT;
|
CAF_CMD_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void applyTiling( RiuMainWindowBase* mainWindow, RiaDefines::WindowTileMode requestedTileMode );
|
static void applyTiling( RiuMainWindow* mainWindow, RiaDefines::WindowTileMode requestedTileMode );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool isCommandEnabled() override;
|
bool isCommandEnabled() override;
|
||||||
@ -77,6 +78,9 @@ class RicTilePlotWindowsFeature : public caf::CmdFeature
|
|||||||
{
|
{
|
||||||
CAF_CMD_HEADER_INIT;
|
CAF_CMD_HEADER_INIT;
|
||||||
|
|
||||||
|
public:
|
||||||
|
static void applyTiling( RiuPlotMainWindow* mainWindow, RiaDefines::WindowTileMode requestedTileMode );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool isCommandEnabled() override;
|
bool isCommandEnabled() override;
|
||||||
void onActionTriggered( bool isChecked ) override;
|
void onActionTriggered( bool isChecked ) override;
|
||||||
|
@ -139,15 +139,7 @@ void RiuMdiArea::tileWindowsVertically()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RiuMdiArea::tileWindowsDefault()
|
void RiuMdiArea::tileWindowsDefault()
|
||||||
{
|
{
|
||||||
// Workaround for Qt bug #51761: https://bugreports.qt.io/browse/QTBUG-51761
|
|
||||||
// Set the first window to be the active window then perform resize event and set back.
|
|
||||||
auto a = activeSubWindow();
|
|
||||||
setActiveSubWindow( subWindowListSortedByPosition().front() );
|
|
||||||
|
|
||||||
// QMdiArea::resizeEvent( resizeEvent );
|
|
||||||
tileSubWindows();
|
tileSubWindows();
|
||||||
|
|
||||||
setActiveSubWindow( a );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -165,29 +157,12 @@ void RiuMdiArea::resizeEvent( QResizeEvent* resizeEvent )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RiuMdiArea::applyTiling()
|
void RiuMdiArea::applyTiling()
|
||||||
{
|
{
|
||||||
QMdiArea::WindowOrder currentActivationOrder = activationOrder();
|
|
||||||
|
|
||||||
for ( auto subWindow : subWindowList() )
|
for ( auto subWindow : subWindowList() )
|
||||||
{
|
{
|
||||||
auto riuWindow = dynamic_cast<RiuMdiSubWindow*>( subWindow );
|
auto riuWindow = dynamic_cast<RiuMdiSubWindow*>( subWindow );
|
||||||
riuWindow->blockTilingChanges( true );
|
riuWindow->blockTilingChanges( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
auto windowList = subWindowListSortedByPosition();
|
|
||||||
|
|
||||||
QMdiSubWindow* activeWindow = activeSubWindow();
|
|
||||||
|
|
||||||
// Force activation order so they end up in the order of the loop.
|
|
||||||
setActivationOrder( QMdiArea::ActivationHistoryOrder );
|
|
||||||
|
|
||||||
// setBlockSubWindowActivatedSignal( true );
|
|
||||||
|
|
||||||
// Activate in reverse order
|
|
||||||
for ( auto it = windowList.rbegin(); it != windowList.rend(); ++it )
|
|
||||||
{
|
|
||||||
setActiveSubWindow( *it );
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ( tileMode() )
|
switch ( tileMode() )
|
||||||
{
|
{
|
||||||
case RiaDefines::WindowTileMode::UNDEFINED:
|
case RiaDefines::WindowTileMode::UNDEFINED:
|
||||||
@ -205,10 +180,6 @@ void RiuMdiArea::applyTiling()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set back the original activation order to avoid messing with the standard ordering
|
|
||||||
setActivationOrder( currentActivationOrder );
|
|
||||||
setActiveSubWindow( activeWindow );
|
|
||||||
|
|
||||||
for ( auto subWindow : subWindowList() )
|
for ( auto subWindow : subWindowList() )
|
||||||
{
|
{
|
||||||
auto riuWindow = dynamic_cast<RiuMdiSubWindow*>( subWindow );
|
auto riuWindow = dynamic_cast<RiuMdiSubWindow*>( subWindow );
|
||||||
|
Loading…
Reference in New Issue
Block a user