aboutsummaryrefslogtreecommitdiff
path: root/src/core/kconfigdata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/kconfigdata.cpp')
-rw-r--r--src/core/kconfigdata.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/core/kconfigdata.cpp b/src/core/kconfigdata.cpp
index 109063d6..6ef6af07 100644
--- a/src/core/kconfigdata.cpp
+++ b/src/core/kconfigdata.cpp
@@ -145,6 +145,11 @@ bool KEntryMap::setEntry(const QByteArray &group, const QByteArray &key, const Q
}
e.bExpand = (options & EntryExpansion);
e.bReverted = false;
+ if (options & EntryLocalized) {
+ e.bLocalizedCountry = (options & EntryLocalizedCountry);
+ } else {
+ e.bLocalizedCountry = false;
+ }
if (newKey) {
//qDebug() << "inserting" << k << "=" << value;
@@ -158,6 +163,14 @@ bool KEntryMap::setEntry(const QByteArray &group, const QByteArray &key, const Q
return true;
} else {
// KEntry e2 = it.value();
+ if (options & EntryLocalized) {
+ // fast exit checks for cases where the existing entry is more specific
+ const KEntry &e2 = it.value();
+ if (e2.bLocalizedCountry && !e.bLocalizedCountry) {
+ // lang_COUNTRY > lang
+ return false;
+ }
+ }
if (it.value() != e) {
//qDebug() << "changing" << k << "from" << e.mValue << "to" << value;
it.value() = e;