From 2d47e351c84ed6ec09db951528782869b72bd884 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Fri, 20 Nov 2020 11:05:12 +0300 Subject: [PATCH] rootsChanged() event should be emitted if inherited sdk has been changed for open existing project with unmodified project model (IDEA-254948) GitOrigin-RevId: 2a8af29fb72d96d9848e9177efdf5c484d7218aa --- .../impl/legacyBridge/module/ModuleManagerComponentBridge.kt | 5 +++++ .../impl/legacyBridge/project/ProjectRootManagerBridge.kt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/ModuleManagerComponentBridge.kt b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/ModuleManagerComponentBridge.kt index 7bcdabd1cff4..3170d928c388 100644 --- a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/ModuleManagerComponentBridge.kt +++ b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/ModuleManagerComponentBridge.kt @@ -22,6 +22,7 @@ import com.intellij.openapi.project.ProjectManager import com.intellij.openapi.project.ProjectManagerListener import com.intellij.openapi.project.impl.ProjectServiceContainerInitializedListener import com.intellij.openapi.roots.ModuleRootManager +import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.roots.ex.ProjectRootManagerEx import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar import com.intellij.openapi.util.Disposer @@ -38,6 +39,7 @@ import com.intellij.workspaceModel.ide.impl.legacyBridge.library.LibraryBridgeIm import com.intellij.workspaceModel.ide.impl.legacyBridge.library.ProjectLibraryTableBridgeImpl import com.intellij.workspaceModel.ide.impl.legacyBridge.library.ProjectLibraryTableBridgeImpl.Companion.libraryMap import com.intellij.workspaceModel.ide.impl.legacyBridge.module.roots.ModuleRootComponentBridge +import com.intellij.workspaceModel.ide.impl.legacyBridge.project.ProjectRootManagerBridge import com.intellij.workspaceModel.ide.impl.legacyBridge.project.ProjectRootsChangeListener import com.intellij.workspaceModel.ide.legacyBridge.ModuleBridge import com.intellij.workspaceModel.storage.* @@ -342,11 +344,14 @@ class ModuleManagerComponentBridge(private val project: Project) : ModuleManager } val results = service.invokeAll(tasks) + val projectRootManager = ProjectRootManager.getInstance(project) as ProjectRootManagerBridge + WorkspaceModel.getInstance(project).updateProjectModelSilent { builder -> val moduleMap = builder.mutableModuleMap results.mapNotNull { it.get() }.forEach { (entity, module) -> moduleMap.addMapping(entity, module) ModuleRootComponentBridge.getInstance(module).moduleLibraryTable.registerModuleLibraryInstances(builder) + projectRootManager.addTrackedLibraryAndJdkFromEntity(entity) } } } diff --git a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/project/ProjectRootManagerBridge.kt b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/project/ProjectRootManagerBridge.kt index f85c98685ecb..17f6d7c1487e 100644 --- a/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/project/ProjectRootManagerBridge.kt +++ b/platform/lang-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/project/ProjectRootManagerBridge.kt @@ -91,7 +91,7 @@ class ProjectRootManagerBridge(project: Project) : ProjectRootManagerComponent(p jdkChangeListener.unsubscribeListeners() } - private fun addTrackedLibraryAndJdkFromEntity(moduleEntity: ModuleEntity) { + fun addTrackedLibraryAndJdkFromEntity(moduleEntity: ModuleEntity) { LOG.debug { "Add tracked global libraries and JDK from ${moduleEntity.name}" } val libraryTablesRegistrar = LibraryTablesRegistrar.getInstance() moduleEntity.dependencies.forEach {