diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ProjectSdksModel.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ProjectSdksModel.java index 1ccbeadddeb8..d67c251e8fe0 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ProjectSdksModel.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ProjectSdksModel.java @@ -86,15 +86,6 @@ public class ProjectSdksModel implements SdkModel { } public void reset(@Nullable Project project) { - resetSdkModel(); - if (project != null) { - myProjectSdk = findSdk(ProjectRootManager.getInstance(project).getProjectSdkName()); - } - myModified = false; - myInitialized = true; - } - - private void resetSdkModel() { myProjectSdks.clear(); final Sdk[] projectSdks = ProjectJdkTable.getInstance().getAllJdks(); for (Sdk sdk : projectSdks) { @@ -105,6 +96,11 @@ public class ProjectSdksModel implements SdkModel { LOG.error(e); } } + if (project != null) { + myProjectSdk = findSdk(ProjectRootManager.getInstance(project).getProjectSdkName()); + } + myModified = false; + myInitialized = true; } public void disposeUIResources() { @@ -171,7 +167,6 @@ public class ProjectSdksModel implements SdkModel { } } }); - resetSdkModel(); myModified = false; } @@ -302,11 +297,17 @@ public class ProjectSdksModel implements SdkModel { public void doAdd(Sdk newSdk, @Nullable Consumer updateTree) { myModified = true; - myProjectSdks.put(newSdk, newSdk); - if (updateTree != null) { - updateTree.consume(newSdk); + try { + Sdk editableCopy = (Sdk)newSdk.clone(); + myProjectSdks.put(newSdk, editableCopy); + if (updateTree != null) { + updateTree.consume(editableCopy); + } + mySdkEventsDispatcher.getMulticaster().sdkAdded(editableCopy); + } + catch (CloneNotSupportedException e) { + LOG.error(e); } - mySdkEventsDispatcher.getMulticaster().sdkAdded(newSdk); } @Nullable diff --git a/python/ide/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java b/python/ide/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java index 3bcd29196396..810afb34ee38 100644 --- a/python/ide/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java +++ b/python/ide/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java @@ -285,7 +285,7 @@ public class PythonSdkDetailsDialog extends DialogWrapper { myProjectSdksModel.addSdk(sdk); } refreshSdkList(); - mySdkList.setSelectedValue(sdk, true); + mySdkList.setSelectedValue(myProjectSdksModel.findSdk(sdk.getName()), true); mySdkListChanged = true; } }