diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index 2c1d9c1da22..ff733355e97 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -286,8 +286,25 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { CProjectDescriptionStorageManager.getInstance().projectClosedRemove(project); } - public void projectMove(IProject from, IProject to) { + /** + * + * @param from Project to move the description from + * @param to Project where the description is moved to + * @return ICProjectDescription - non serialized, modified, writable + * project description. To serialize, call setProjectDescription() + * + */ + public ICProjectDescription projectMove(IProject from, IProject to) { CProjectDescriptionStorageManager.getInstance().projectMove(from, to); + + int flags = CProjectDescriptionManager.INTERNAL_GET_IGNORE_CLOSE | + CProjectDescriptionManager.GET_WRITABLE; + CProjectDescription des = (CProjectDescription)getProjectDescription(to, flags); + // set configuration descriptions to "writable" state + for (ICConfigurationDescription cfgDes : des.getConfigurations()) { + des.updateChild((CConfigurationDescription)cfgDes, true); + } + return des; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java index c2689582119..eca0b940dd1 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java @@ -78,8 +78,10 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements IProject toProject = toRc.getProject(); switch(toRc.getType()){ case IResource.PROJECT:{ - fMngr.projectMove(fromProject, toProject); + ICProjectDescription des = fMngr.projectMove(fromProject, toProject); fRemovedProjSet.add(fromProject); + if(des != null) + fProjDesMap.put(toProject, des); } break; case IResource.FOLDER:{