From 698783ef8e84a63391ce0573b303c97093ae2248 Mon Sep 17 00:00:00 2001 From: Sergei Tachenov Date: Thu, 31 Oct 2024 15:56:30 +0200 Subject: [PATCH] IJPL-165642 Create the Structure View UI on the EDT (cherry picked from commit e9996decdd83fb657bfaabede8aae1435a51968e) IJ-CR-149552 GitOrigin-RevId: 3661e7c28297e8f28023e324f2e74fc545e3d8d7 --- .../ide/impl/StructureViewWrapperImpl.kt | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.kt b/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.kt index abf95416d02a..1b2291b98bed 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.kt +++ b/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.kt @@ -416,22 +416,24 @@ class StructureViewWrapperImpl( val structureViewBuilder = if (editor != null && editor.isValid) readAction { editor.structureViewBuilder } else createStructureViewBuilder(file) if (structureViewBuilder != null) { - writeIntentReadAction { - val structureView = structureViewBuilder.createStructureView(editor, project) - myStructureView = structureView + withContext(Dispatchers.EDT) { + writeIntentReadAction { + val structureView = structureViewBuilder.createStructureView(editor, project) + myStructureView = structureView - myFileEditor = editor - Disposer.register(this@StructureViewWrapperImpl, structureView) - if (structureView is StructureViewComposite) { - val views: Array = structureView.structureViews - names = views.map { it.title }.toTypedArray() - panels = views.map { createContentPanel(it.structureView.component) } + myFileEditor = editor + Disposer.register(this@StructureViewWrapperImpl, structureView) + if (structureView is StructureViewComposite) { + val views: Array = structureView.structureViews + names = views.map { it.title }.toTypedArray() + panels = views.map { createContentPanel(it.structureView.component) } + } + else { + createSinglePanel(structureView.component) + } + structureView.restoreState() + structureView.centerSelectedRow() } - else { - createSinglePanel(structureView.component) - } - structureView.restoreState() - structureView.centerSelectedRow() } } }