From 6766b0af89cec6c2bfbad1b344ee148f5e782d8a Mon Sep 17 00:00:00 2001 From: RickyRister <42636155+RickyRister@users.noreply.github.com> Date: Tue, 28 Jul 2026 16:12:41 -0700 Subject: [PATCH] [SettingsButtonWidget] Fix memory leak from unparented popup (#7055) --- .../widgets/quick_settings/settings_button_widget.cpp | 7 +++++++ .../widgets/quick_settings/settings_button_widget.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp index badc437ee..c69fa3f14 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp +++ b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp @@ -20,6 +20,13 @@ SettingsButtonWidget::SettingsButtonWidget(QWidget *parent) setLayout(layout); } +SettingsButtonWidget::~SettingsButtonWidget() +{ + // We don't parent the popup because it might lead to better behavior on certain window managers. + // So we have to manually delete it + popup->deleteLater(); +} + void SettingsButtonWidget::addSettingsWidget(QWidget *toAdd) const { popup->addSettingsWidget(toAdd); diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h index 5dcbe059a..1dc52ac72 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h +++ b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h @@ -19,6 +19,9 @@ class SettingsButtonWidget : public QWidget public: explicit SettingsButtonWidget(QWidget *parent = nullptr); + + ~SettingsButtonWidget() override; + void addSettingsWidget(QWidget *toAdd) const; void removeSettingsWidget(QWidget *toRemove) const; void setButtonIcon(QPixmap iconMap);