From 8cb129f944e90e59ddfa76324b557cec8eb08a98 Mon Sep 17 00:00:00 2001 From: Alexey Rochev Date: Sun, 22 Dec 2024 00:27:32 +0300 Subject: [PATCH] Don't emit signal if the value did not change --- src/settings.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/settings.cpp b/src/settings.cpp index 5383294e..343d4b32 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -20,8 +20,9 @@ #define SETTINGS_PROPERTY_DEF_IMPL(type, getter, setterType, setter, key, defaultValue) \ type Settings::getter() const { return getValue(mSettings, key, defaultValue); } \ void Settings::setter(setterType value) { \ - setValue(mSettings, key, value); \ - emit getter##Changed(); \ + if (setValue(mSettings, key, value)) { \ + emit getter##Changed(); \ + } \ } #define SETTINGS_PROPERTY_DEF_TRIVIAL(type, getter, setter, key, defaultValue) \ @@ -45,8 +46,12 @@ namespace tremotesf { } template - void setValue(QSettings* settings, const char* key, T value) { - settings->setValue(QLatin1String(key), QVariant::fromValue(value)); + bool setValue(QSettings* settings, const char* key, T value) { + if (value != settings->value(key).template value()) { + settings->setValue(QLatin1String(key), QVariant::fromValue(value)); + return true; + } + return false; } }