diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/projectRoot')
-rw-r--r-- | platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ProjectSdksModel.java | 16 |
1 files changed, 11 insertions, 5 deletions
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 e4c690ec05ed..87df147a745f 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,6 +86,15 @@ 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) { @@ -96,11 +105,6 @@ public class ProjectSdksModel implements SdkModel { LOG.error(e); } } - if (project != null) { - myProjectSdk = findSdk(ProjectRootManager.getInstance(project).getProjectSdkName()); - } - myModified = false; - myInitialized = true; } public void disposeUIResources() { @@ -154,6 +158,7 @@ public class ProjectSdksModel implements SdkModel { for (Sdk originalJdk : itemsInTable) { final Sdk modifiedJdk = myProjectSdks.get(originalJdk); LOG.assertTrue(modifiedJdk != null); + LOG.assertTrue(originalJdk != modifiedJdk); jdkTable.updateJdk(originalJdk, modifiedJdk); } // Add new items to table @@ -166,6 +171,7 @@ public class ProjectSdksModel implements SdkModel { } } }); + resetSdkModel(); myModified = false; } |