From e8de848017b507a573bef339f315b761b34a4ece Mon Sep 17 00:00:00 2001 From: RickyRister Date: Sun, 26 Jul 2026 20:29:37 -0700 Subject: [PATCH] manual delete --- .../widgets/quick_settings/settings_button_widget.cpp | 9 ++++++++- .../widgets/quick_settings/settings_button_widget.h | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) 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 3cd297433..c69fa3f14 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp +++ b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp @@ -6,7 +6,7 @@ #include SettingsButtonWidget::SettingsButtonWidget(QWidget *parent) - : QWidget(parent), button(new QToolButton(this)), popup(new SettingsPopupWidget(this)) + : QWidget(parent), button(new QToolButton(this)), popup(new SettingsPopupWidget(nullptr)) { button->setIcon(QPixmap("theme:icons/cogwheel")); button->setCheckable(true); @@ -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);