summaryrefslogtreecommitdiffstats
path: root/sigscript/Config.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-16 20:32:53 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-17 17:35:07 -0400
commit1b5a89d33b81af0939bef3c8e54633300a69b375 (patch)
tree635fa41ee2f31076e3e8276073a0539b4f631824 /sigscript/Config.cpp
parent3d7155a10a4bf9e6ba2f2b9a992c3e0aff44c3d0 (diff)
downloadsigen-1b5a89d33b81af0939bef3c8e54633300a69b375.tar.gz
sigen-1b5a89d33b81af0939bef3c8e54633300a69b375.tar.xz
sigen-1b5a89d33b81af0939bef3c8e54633300a69b375.zip
Fix up option handling (only emit when changed and if the value exists)
Diffstat (limited to 'sigscript/Config.cpp')
-rw-r--r--sigscript/Config.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp
index 6979a49f..3070f4cc 100644
--- a/sigscript/Config.cpp
+++ b/sigscript/Config.cpp
@@ -96,15 +96,21 @@ QStringList Config::values(const bool recursive) const
void Config::setOptions(const QString& name, const Options options)
{
QWriteLocker locker(&m_lock);
- m_values[name].second |= options;
- emit(optionsChanged(name, options));
+ if (m_values.contains(name) && ((~m_values[name].second) & options))
+ {
+ m_values[name].second |= options;
+ emit(optionsChanged(name, options));
+ }
}
void Config::unsetOptions(const QString& name, const Options options)
{
QWriteLocker locker(&m_lock);
- m_values[name].second |= ~options;
- emit(optionsChanged(name, options));
+ if (m_values.contains(name) && (m_values[name].second & options))
+ {
+ m_values[name].second &= ~options;
+ emit(optionsChanged(name, options));
+ }
}
Config::Options Config::options(const QString& name, const bool recursive) const