diff --git a/src/platform/qt/LoadSaveState.cpp b/src/platform/qt/LoadSaveState.cpp index 99cf63672..9336b88c3 100644 --- a/src/platform/qt/LoadSaveState.cpp +++ b/src/platform/qt/LoadSaveState.cpp @@ -107,3 +107,8 @@ void LoadSaveState::triggerState(int slot) { GBAThreadContinue(thread); close(); } + +void LoadSaveState::closeEvent(QCloseEvent* event) { + emit closed(); + QWidget::closeEvent(event); +} diff --git a/src/platform/qt/LoadSaveState.h b/src/platform/qt/LoadSaveState.h index 2e8cac810..fd7c2c7cc 100644 --- a/src/platform/qt/LoadSaveState.h +++ b/src/platform/qt/LoadSaveState.h @@ -25,8 +25,12 @@ public: void setMode(LoadSave mode); +signals: + void closed(); + protected: virtual bool eventFilter(QObject*, QEvent*) override; + virtual void closeEvent(QCloseEvent*) override; private: void loadState(int slot); diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 103918713..cab7e07c0 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -148,9 +148,11 @@ void Window::gameStopped() { } void Window::openStateWindow(LoadSave ls) { + m_controller->setPaused(true); LoadSaveState* window = new LoadSaveState(m_controller); window->setAttribute(Qt::WA_DeleteOnClose); connect(this, SIGNAL(shutdown()), window, SLOT(hide())); + connect(window, &LoadSaveState::closed, [this]() { m_controller->setPaused(false); }); window->setMode(ls); window->show(); }