Skip to content

Commit

Permalink
Don't emit signal if the value did not change
Browse files Browse the repository at this point in the history
  • Loading branch information
equeim committed Dec 22, 2024
1 parent 6ae0c73 commit 8cb129f
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@
#define SETTINGS_PROPERTY_DEF_IMPL(type, getter, setterType, setter, key, defaultValue) \
type Settings::getter() const { return getValue<type>(mSettings, key, defaultValue); } \
void Settings::setter(setterType value) { \
setValue<type>(mSettings, key, value); \
emit getter##Changed(); \
if (setValue<type>(mSettings, key, value)) { \
emit getter##Changed(); \
} \
}

#define SETTINGS_PROPERTY_DEF_TRIVIAL(type, getter, setter, key, defaultValue) \
Expand All @@ -45,8 +46,12 @@ namespace tremotesf {
}

template<typename T>
void setValue(QSettings* settings, const char* key, T value) {
settings->setValue(QLatin1String(key), QVariant::fromValue<T>(value));
bool setValue(QSettings* settings, const char* key, T value) {
if (value != settings->value(key).template value<T>()) {
settings->setValue(QLatin1String(key), QVariant::fromValue<T>(value));
return true;
}
return false;
}
}

Expand Down

0 comments on commit 8cb129f

Please sign in to comment.