diff --git a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp index 5dfd10b547..d1309d709f 100644 --- a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp +++ b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp @@ -83,6 +83,8 @@ FIFOPlayerWindow::FIFOPlayerWindow(FifoPlayer& fifo_player, FifoRecorder& fifo_r FIFOPlayerWindow::~FIFOPlayerWindow() { + Settings::GetQSettings().setValue(QStringLiteral("fifoplayerwindow/geometry"), saveGeometry()); + m_fifo_player.SetFileLoadedCallback({}); m_fifo_player.SetFrameWrittenCallback({}); } @@ -168,6 +170,7 @@ void FIFOPlayerWindow::CreateWidgets() layout->addWidget(info_group); layout->addWidget(playback_group); layout->addWidget(recording_group); + layout->addStretch(); layout->addWidget(m_button_box); m_main_widget = new QWidget(this); @@ -188,6 +191,9 @@ void FIFOPlayerWindow::CreateWidgets() void FIFOPlayerWindow::LoadSettings() { + restoreGeometry( + Settings::GetQSettings().value(QStringLiteral("fifoplayerwindow/geometry")).toByteArray()); + m_early_memory_updates->setChecked(Config::Get(Config::MAIN_FIFOPLAYER_EARLY_MEMORY_UPDATES)); m_loop->setChecked(Config::Get(Config::MAIN_FIFOPLAYER_LOOP_REPLAY)); } diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index 488ca8ecd6..a8e4e0764d 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -1379,8 +1379,8 @@ void MainWindow::ShowFIFOPlayer() { if (!m_fifo_window) { - m_fifo_window = new FIFOPlayerWindow(m_system.GetFifoPlayer(), m_system.GetFifoRecorder()); - connect(m_fifo_window, &FIFOPlayerWindow::LoadFIFORequested, this, + m_fifo_window.reset(new FIFOPlayerWindow(m_system.GetFifoPlayer(), m_system.GetFifoRecorder())); + connect(m_fifo_window.get(), &FIFOPlayerWindow::LoadFIFORequested, this, [this](const QString& path) { StartGame(path, ScanForSecondDisc::No); }); } diff --git a/Source/Core/DolphinQt/MainWindow.h b/Source/Core/DolphinQt/MainWindow.h index d648e6189c..38250058ed 100644 --- a/Source/Core/DolphinQt/MainWindow.h +++ b/Source/Core/DolphinQt/MainWindow.h @@ -16,6 +16,7 @@ #endif // USE_RETRO_ACHIEVEMENTS #include "Core/Boot/Boot.h" +#include "DolphinQt/FIFO/FIFOPlayerWindow.h" class QMenu; class QStackedWidget; @@ -29,7 +30,6 @@ class CheatsManager; class CodeWidget; class DiscordHandler; class DragEnterEvent; -class FIFOPlayerWindow; class FreeLookWindow; class GameList; class GBATASInputWindow; @@ -245,7 +245,9 @@ private: std::unique_ptr m_pending_boot; SettingsWindow* m_settings_window = nullptr; - FIFOPlayerWindow* m_fifo_window = nullptr; + // m_fifo_window doesn't set MainWindow as its parent so that the fifo can be focused without + // raising the main window, so use a unique_ptr to make sure it gets destroyed. + std::unique_ptr m_fifo_window = nullptr; SkylanderPortalWindow* m_skylander_window = nullptr; InfinityBaseWindow* m_infinity_window = nullptr; WiiSpeakWindow* m_wii_speak_window = nullptr;