SettingsAccessor: Fix for projects with shared file only

Broken by 0addee8bac

Change-Id: I86caf4146556b1bde0ba7798115672b840ca8621
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2013-08-14 14:39:14 +03:00
committed by Orgad Shaneh
parent 6fb7a99b7f
commit 48a3a31f7c

View File

@@ -578,6 +578,8 @@ QVariantMap mergeSharedSettings(const QVariantMap &userMap, const QVariantMap &s
QVariantMap result = userMap; QVariantMap result = userMap;
if (sharedMap.isEmpty()) if (sharedMap.isEmpty())
return result; return result;
if (userMap.isEmpty())
return sharedMap;
QSet<QString> stickyKeys; QSet<QString> stickyKeys;
const QVariant stickyList = result.take(QLatin1String(USER_STICKY_KEYS_KEY)).toList(); const QVariant stickyList = result.take(QLatin1String(USER_STICKY_KEYS_KEY)).toList();
@@ -898,19 +900,23 @@ SettingsAccessor::SettingsData SettingsAccessor::mergeSettings(const SettingsAcc
{ {
SettingsData newUser = user; SettingsData newUser = user;
SettingsData newShared = shared; SettingsData newShared = shared;
SettingsData result;
if (shared.isValid() && user.isValid()) { if (shared.isValid() && user.isValid()) {
while (newUser.version() < newShared.version()) while (newUser.version() < newShared.version())
incrementVersion(newUser); incrementVersion(newUser);
while (newShared.version() < newUser.version()) while (newShared.version() < newUser.version())
incrementVersion(newShared); incrementVersion(newShared);
result = newUser;
result.m_map = mergeSharedSettings(newUser.m_map, newShared.m_map);
} else if (shared.isValid()) {
result = shared;
} else if (user.isValid()) {
result = user;
} }
m_project->setProperty(SHARED_SETTINGS, newShared.m_map); m_project->setProperty(SHARED_SETTINGS, newShared.m_map);
SettingsData result = newUser;
result.m_map = mergeSharedSettings(newUser.m_map, newShared.m_map);
if (!result.isValid()) if (!result.isValid())
return result; return result;