From 290402323f59bc49207b68fe8318bc23fc5fdbd7 Mon Sep 17 00:00:00 2001 From: Lev Serebryakov Date: Fri, 9 Aug 2024 15:31:02 +0200 Subject: [PATCH] IJPL-149317 Disable Write Intent Lock for runnables executed on EDT Add explicit locks in usage view. GitOrigin-RevId: 66aa9988fb33b69574d973cff2c8fd1edab44098 --- .../similarity/MostCommonUsagePatternsComponent.kt | 3 ++- .../src/com/intellij/usages/impl/UsagePreviewPanel.kt | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.kt b/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.kt index 645fb0cb39c5..9a981e237fa3 100644 --- a/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.kt +++ b/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.kt @@ -10,6 +10,7 @@ import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.application.EDT import com.intellij.openapi.application.readAction +import com.intellij.openapi.application.writeIntentReadAction import com.intellij.openapi.project.Project import com.intellij.openapi.ui.SimpleToolWindowPanel import com.intellij.openapi.util.Disposer @@ -186,7 +187,7 @@ internal class MostCommonUsagePatternsComponent( previewComponent.renderCluster(loadedSnippet.usageInfo, loadedSnippet.renderingData) } else { - previewComponent = create(usageView, loadedSnippet.usageInfo, loadedSnippet.renderingData, this) + previewComponent = writeIntentReadAction { create(usageView, loadedSnippet.usageInfo, loadedSnippet.renderingData, this) } myMainPanel.add(previewComponent) previewComponents.add(previewComponent) } diff --git a/platform/usageView-impl/src/com/intellij/usages/impl/UsagePreviewPanel.kt b/platform/usageView-impl/src/com/intellij/usages/impl/UsagePreviewPanel.kt index 071a3a2f69ee..ff229cfe57d3 100644 --- a/platform/usageView-impl/src/com/intellij/usages/impl/UsagePreviewPanel.kt +++ b/platform/usageView-impl/src/com/intellij/usages/impl/UsagePreviewPanel.kt @@ -155,7 +155,10 @@ open class UsagePreviewPanel @JvmOverloads constructor(project: Project, myEditor = createEditor(psiFile, document) lineHeight = myEditor!!.lineHeight myEditor!!.setBorder(if (myIsEditor) null else JBEmptyBorder(0, UIUtil.LARGE_VGAP, 0, 0)) - add(myEditor!!.component, BorderLayout.CENTER) + //maybe readaction + writeIntentReadAction { + add(myEditor!!.component, BorderLayout.CENTER) + } invalidate() validate() } @@ -164,7 +167,10 @@ open class UsagePreviewPanel @JvmOverloads constructor(project: Project, if (infos != myCachedSelectedUsageInfos // avoid moving viewport || !UsageViewPresentation.arePatternsEqual(myCachedSearchPattern, myPresentation.searchPattern) || myCachedReplaceString != myPresentation.replaceString || myCachedCaseSensitive != myPresentation.isCaseSensitive) { - highlight(infos, myEditor!!, project, myShowTooltipBalloon, HighlighterLayer.ADDITIONAL_SYNTAX) + //maybe readaction + WriteIntentReadAction.run { + highlight(infos, myEditor!!, project, myShowTooltipBalloon, HighlighterLayer.ADDITIONAL_SYNTAX) + } myCachedSelectedUsageInfos = infos myCachedSearchPattern = myPresentation.searchPattern myCachedCaseSensitive = myPresentation.isCaseSensitive