From a0370c7fb7ee9a8beae382c4b541a8dee608f292 Mon Sep 17 00:00:00 2001
From: Stenzek <stenzek@gmail.com>
Date: Sat, 20 Jan 2024 20:10:55 +1000
Subject: [PATCH] Qt: Delete settings windows on close

---
 src/duckstation-qt/settingswindow.cpp | 7 +++++++
 src/duckstation-qt/settingswindow.h   | 3 ++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/duckstation-qt/settingswindow.cpp b/src/duckstation-qt/settingswindow.cpp
index 687bd413a..4b71035ec 100644
--- a/src/duckstation-qt/settingswindow.cpp
+++ b/src/duckstation-qt/settingswindow.cpp
@@ -68,6 +68,13 @@ SettingsWindow::~SettingsWindow()
     s_open_game_properties_dialogs.removeOne(this);
 }
 
+void SettingsWindow::closeEvent(QCloseEvent* event)
+{
+  // we need to clean up ourselves, since we're not modal
+  if (isPerGameSettings())
+    deleteLater();
+}
+
 void SettingsWindow::addPages()
 {
   addWidget(
diff --git a/src/duckstation-qt/settingswindow.h b/src/duckstation-qt/settingswindow.h
index e4d24f5ff..8cb0fa6db 100644
--- a/src/duckstation-qt/settingswindow.h
+++ b/src/duckstation-qt/settingswindow.h
@@ -98,7 +98,8 @@ private Q_SLOTS:
   void onRestoreDefaultsClicked();
 
 protected:
-  void wheelEvent(QWheelEvent* event);
+  void closeEvent(QCloseEvent* event) override;
+  void wheelEvent(QWheelEvent* event) override;
 
 private:
   enum : u32