IJPL-165642 Create the Structure View UI on the EDT

(cherry picked from commit e9996decdd83fb657bfaabede8aae1435a51968e)

IJ-CR-149552

GitOrigin-RevId: 3661e7c28297e8f28023e324f2e74fc545e3d8d7
This commit is contained in:
Sergei Tachenov
2024-10-31 15:56:30 +02:00
committed by intellij-monorepo-bot
parent eb031cebe7
commit 698783ef8e

View File

@@ -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<StructureViewDescriptor> = 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<StructureViewDescriptor> = 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()
}
}
}