diff --git a/src/platform/qt/GBAApp.cpp b/src/platform/qt/GBAApp.cpp index 084343b47..326bfbbcb 100644 --- a/src/platform/qt/GBAApp.cpp +++ b/src/platform/qt/GBAApp.cpp @@ -42,6 +42,9 @@ GBAApp::GBAApp(int& argc, char* argv[]) QApplication::setApplicationVersion(projectVersion); Window* w = new Window(&m_configController); + connect(w, &Window::destroyed, [this]() { + m_windows[0] = nullptr; + }); m_windows[0] = w; #ifndef Q_OS_MAC @@ -79,7 +82,11 @@ Window* GBAApp::newWindow() { return nullptr; } Window* w = new Window(&m_configController, m_multiplayer.attached()); - m_windows[m_multiplayer.attached()] = w; + int windowId = m_multiplayer.attached(); + connect(w, &Window::destroyed, [this, windowId]() { + m_windows[windowId] = nullptr; + }); + m_windows[windowId] = w; w->setAttribute(Qt::WA_DeleteOnClose); #ifndef Q_OS_MAC w->show(); diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index c533c786e..6ba323078 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -68,6 +68,7 @@ Window::Window(ConfigController* config, int playerId, QWidget* parent) { setFocusPolicy(Qt::StrongFocus); setAcceptDrops(true); + setAttribute(Qt::WA_DeleteOnClose); m_controller = new GameController(this); m_controller->setInputController(&m_inputController); m_controller->setOverrides(m_config->overrides());