diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java index 78775696bf2..dcf961c2d67 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java @@ -15,6 +15,7 @@ import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICElementDelta; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.settings.model.CProjectDescriptionEvent; +import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICDescriptionDelta; import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager; import org.eclipse.cdt.internal.core.model.CModelOperation; @@ -64,11 +65,14 @@ public class SetCProjectDescriptionOperation extends CModelOperation { throw new CModelException(ExceptionFactory.createCoreException(SettingsModelMessages.getString("CProjectDescriptionManager.17") + project.getName())); //$NON-NLS-1$ fNewDescriptionCache = new CProjectDescription(fSetDescription, true, el, creating); + + boolean envStates[] = getEnvStates(fNewDescriptionCache); try { mngr.setDescriptionApplying(project, fNewDescriptionCache); modified |= fNewDescriptionCache.applyDatas(context); } finally { mngr.clearDescriptionApplying(project); + setEnvStates(fNewDescriptionCache, envStates); } } else { modified = fOldDescriptionCache != null; @@ -150,4 +154,38 @@ public class SetCProjectDescriptionOperation extends CModelOperation { return false; } + private boolean[] getEnvStates(CProjectDescription pd) { + ICConfigurationDescription[] cfs = pd.getConfigurations(); + boolean[] result = new boolean[cfs.length]; + for (int i=0; i