From 48a3a31f7c471960040a86cce13ce67dc7d01197 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 14 Aug 2013 14:39:14 +0300 Subject: [PATCH] SettingsAccessor: Fix for projects with shared file only Broken by 0addee8bac56410e2208e52e9e73db32a9663b4b Change-Id: I86caf4146556b1bde0ba7798115672b840ca8621 Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/settingsaccessor.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugins/projectexplorer/settingsaccessor.cpp b/src/plugins/projectexplorer/settingsaccessor.cpp index 923b1ba3700..3df96c53245 100644 --- a/src/plugins/projectexplorer/settingsaccessor.cpp +++ b/src/plugins/projectexplorer/settingsaccessor.cpp @@ -578,6 +578,8 @@ QVariantMap mergeSharedSettings(const QVariantMap &userMap, const QVariantMap &s QVariantMap result = userMap; if (sharedMap.isEmpty()) return result; + if (userMap.isEmpty()) + return sharedMap; QSet stickyKeys; 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 newShared = shared; + SettingsData result; if (shared.isValid() && user.isValid()) { while (newUser.version() < newShared.version()) incrementVersion(newUser); while (newShared.version() < newUser.version()) 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); - SettingsData result = newUser; - result.m_map = mergeSharedSettings(newUser.m_map, newShared.m_map); - if (!result.isValid()) return result;