From 8e798cbbb98dcf027ea780f0c94e54ee38ed515d Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Tue, 10 Aug 2021 20:50:49 -0400 Subject: [PATCH] Save main window position so that it can be restored at same location and size. --- src/drivers/Qt/ConsoleWindow.cpp | 27 ++++++++++++++++++++++++--- src/drivers/Qt/config.cpp | 2 ++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index a63cc97f..7450fa24 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -99,7 +99,7 @@ consoleWin_t::consoleWin_t(QWidget *parent) : QMainWindow( parent ) { - int opt, xWinSize = 256, yWinSize = 240; + int opt, xWinPos = -1, yWinPos = -1, xWinSize = 256, yWinSize = 240; int use_SDL_video = false; int setFullScreen = false; @@ -181,12 +181,19 @@ consoleWin_t::consoleWin_t(QWidget *parent) } + g_config->getOption( "SDL.WinPosX" , &xWinPos ); + g_config->getOption( "SDL.WinPosY" , &yWinPos ); g_config->getOption( "SDL.WinSizeX", &xWinSize ); g_config->getOption( "SDL.WinSizeY", &yWinSize ); if ( (xWinSize >= 256) && (yWinSize >= 224) ) { this->resize( xWinSize, yWinSize ); + + if ( (xWinPos >= 0) && (yWinPos >= 0) ) + { + this->move( xWinPos, yWinPos ); + } } else { @@ -235,10 +242,10 @@ consoleWin_t::~consoleWin_t(void) QClipboard *clipboard; // Save window size and image scaling parameters at app exit. - w = consoleWindow->size(); + w = size(); // Only Save window size if not fullscreen and not maximized - if ( !consoleWindow->isFullScreen() && !consoleWindow->isMaximized() ) + if ( !isFullScreen() && !isMaximized() ) { // Scaling is only saved when applying video settings //if ( viewport_GL != NULL ) @@ -252,9 +259,23 @@ consoleWin_t::~consoleWin_t(void) // g_config->setOption( "SDL.YScale", viewport_SDL->getScaleY() ); //} + g_config->setOption( "SDL.WinPosX" , pos().x() ); + g_config->setOption( "SDL.WinPosY" , pos().y() ); g_config->setOption( "SDL.WinSizeX", w.width() ); g_config->setOption( "SDL.WinSizeY", w.height() ); } + else + { + QRect rect = normalGeometry(); + + if ( rect.isValid() ) + { + g_config->setOption( "SDL.WinPosX" , rect.x() ); + g_config->setOption( "SDL.WinPosY" , rect.y() ); + g_config->setOption( "SDL.WinSizeX", rect.width() ); + g_config->setOption( "SDL.WinSizeY", rect.height() ); + } + } g_config->save(); // Signal Emulator Thread to Stop diff --git a/src/drivers/Qt/config.cpp b/src/drivers/Qt/config.cpp index d538ed1b..ee002b66 100644 --- a/src/drivers/Qt/config.cpp +++ b/src/drivers/Qt/config.cpp @@ -526,6 +526,8 @@ InitConfig() config->addOption('y', "yres", "SDL.YResolution", 0); config->addOption("SDL.LastXRes", 0); config->addOption("SDL.LastYRes", 0); + config->addOption("SDL.WinPosX" , 0); + config->addOption("SDL.WinPosY" , 0); config->addOption("SDL.WinSizeX", 0); config->addOption("SDL.WinSizeY", 0); config->addOption("doublebuf", "SDL.DoubleBuffering", 1);