rootsChanged() event should be emitted if inherited sdk has been changed for open existing project with unmodified project model (IDEA-254948)

GitOrigin-RevId: 2a8af29fb72d96d9848e9177efdf5c484d7218aa
This commit is contained in:
Dmitry Batkovich
2020-11-20 08:13:57 +00:00
committed by intellij-monorepo-bot
parent 4f6ce9c63c
commit 2d47e351c8
2 changed files with 6 additions and 1 deletions
@@ -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)
}
}
}
@@ -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 {