From 2e56f5d3aee485eb01db94f0aa3e7c5066f48062 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 22 Jul 2025 20:26:44 +1000 Subject: [PATCH] Qt: Fix another usage of QObject::disconnect() --- src/duckstation-qt/consolesettingswidget.cpp | 6 ++---- src/duckstation-qt/settingwidgetbinder.h | 21 +++++++++++--------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/duckstation-qt/consolesettingswidget.cpp b/src/duckstation-qt/consolesettingswidget.cpp index d9eb24322..f12a3417f 100644 --- a/src/duckstation-qt/consolesettingswidget.cpp +++ b/src/duckstation-qt/consolesettingswidget.cpp @@ -154,10 +154,8 @@ ConsoleSettingsWidget::ConsoleSettingsWidget(SettingsWindow* dialog, QWidget* pa &ConsoleSettingsWidget::onEnableCPUClockSpeedControlChecked); connect(m_ui.cpuClockSpeed, &QSlider::valueChanged, this, &ConsoleSettingsWidget::onCPUClockSpeedValueChanged); - SettingWidgetBinder::SetAvailability(m_ui.cpuExecutionModeLabel, - !m_dialog->hasGameTrait(GameDatabase::Trait::ForceInterpreter)); - SettingWidgetBinder::SetAvailability(m_ui.cpuExecutionMode, - !m_dialog->hasGameTrait(GameDatabase::Trait::ForceInterpreter)); + SettingWidgetBinder::SetAvailability( + m_ui.cpuExecutionMode, !m_dialog->hasGameTrait(GameDatabase::Trait::ForceInterpreter), m_ui.cpuExecutionModeLabel); calculateCPUClockValue(); } diff --git a/src/duckstation-qt/settingwidgetbinder.h b/src/duckstation-qt/settingwidgetbinder.h index 3fd118fa0..193994e44 100644 --- a/src/duckstation-qt/settingwidgetbinder.h +++ b/src/duckstation-qt/settingwidgetbinder.h @@ -1497,12 +1497,22 @@ static inline void BindWidgetToFolderSetting(SettingsInterface* sif, QLineEdit* } template -static inline void SetAvailability(WidgetType* widget, bool available) +static inline void DisconnectWidget(WidgetType* widget) +{ + using Accessor = SettingAccessor; + Accessor::disconnect(widget); +} + +template +static inline void SetAvailability(WidgetType* widget, bool available, QLabel* widget_label = nullptr) { if (available) return; - widget->disconnect(); + if (widget_label) + widget_label->setEnabled(false); + + DisconnectWidget(widget); if constexpr (std::is_same_v) { @@ -1530,11 +1540,4 @@ static inline void SetAvailability(WidgetType* widget, bool available) widget->setEnabled(false); } -template -static inline void DisconnectWidget(WidgetType* widget) -{ - using Accessor = SettingAccessor; - Accessor::disconnect(widget); -} - } // namespace SettingWidgetBinder