File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -35,6 +35,7 @@ import com.intellij.facet.FacetManager
3535import com.intellij.facet.FacetTypeId
3636import com.intellij.facet.FacetTypeRegistry
3737import com.intellij.ide.projectView.ProjectView
38+ import com.intellij.openapi.application.ApplicationManager
3839import com.intellij.openapi.application.runReadAction
3940import com.intellij.openapi.application.runWriteAction
4041import com.intellij.openapi.module.Module
@@ -77,7 +78,15 @@ class MinecraftFacet(
7778 roots.clear()
7879 }
7980
80- fun refresh () = runWriteActionAndWait {
81+ fun refresh () {
82+ refreshWritePhase()
83+ // Refresh the project view separately to not hold the write lock
84+ ApplicationManager .getApplication().invokeLater {
85+ ProjectView .getInstance(module.project).refresh()
86+ }
87+ }
88+
89+ private fun refreshWritePhase () = runWriteActionAndWait {
8190 if (module.isDisposed) {
8291 return @runWriteActionAndWait
8392 }
@@ -118,8 +127,6 @@ class MinecraftFacet(
118127
119128 newlyEnabled.forEach(AbstractModule ::init )
120129 modules.forEach(AbstractModule ::refresh)
121-
122- ProjectView .getInstance(module.project).refresh()
123130 }
124131
125132 private fun updateRoots () = runWriteAction {
Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ import com.demonwav.mcdev.platform.mcp.util.McpConstants
2929import com.demonwav.mcdev.translations.TranslationFileListener
3030import com.demonwav.mcdev.util.runWriteTaskLater
3131import com.intellij.json.JsonFileType
32+ import com.intellij.openapi.application.ApplicationManager
3233import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder
3334import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
3435import com.intellij.openapi.fileTypes.FileTypeManager
@@ -71,7 +72,10 @@ class McpModule(facet: MinecraftFacet) : AbstractModule(facet) {
7172 }
7273
7374 if (requiresRefresh) {
74- ExternalSystemUtil .refreshProjects(ImportSpecBuilder (project, GradleConstants .SYSTEM_ID ))
75+ // Schedule Gradle project refresh outside write lock
76+ ApplicationManager .getApplication().invokeLater {
77+ ExternalSystemUtil .refreshProjects(ImportSpecBuilder (project, GradleConstants .SYSTEM_ID ))
78+ }
7579 }
7680 }
7781 }
You can’t perform that action at this time.
0 commit comments