diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/IExtractionEngine.kt b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/IExtractionEngine.kt index c7dc41137770..b7e43bc39dd9 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/IExtractionEngine.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/IExtractionEngine.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine import com.intellij.openapi.actionSystem.ex.ActionUtil import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.application.ex.ApplicationManagerEx import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project @@ -16,7 +17,7 @@ import com.intellij.ui.awt.RelativePoint import org.jetbrains.kotlin.idea.base.resources.KotlinBundle import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively import org.jetbrains.kotlin.idea.refactoring.introduce.showErrorHint -import org.jetbrains.kotlin.idea.util.application.executeWriteCommand +import org.jetbrains.kotlin.idea.util.application.executeCommand import javax.swing.event.HyperlinkEvent abstract class IExtractionEngineHelper Unit = {}) { val project = config.descriptor.extractionData.project - onFinish(project.executeWriteCommand(operationName) { generateDeclaration(config) }) + val result = project.executeCommand(operationName) { + var generatedDeclaration: Result? = null + ApplicationManagerEx.getApplicationEx().runWriteActionWithCancellableProgressInDispatchThread("", project, null) { + generatedDeclaration = generateDeclaration(config) + } + generatedDeclaration + } ?: return + onFinish(result) } /** diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/ExtractionEngineHelper.kt b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/ExtractionEngineHelper.kt index b372f2488304..5bef52b9037d 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/ExtractionEngineHelper.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/introduce/extractionEngine/ExtractionEngineHelper.kt @@ -21,6 +21,7 @@ abstract class ExtractionEngineHelper(@NlsContexts.DialogTitle operationName: St ) { + // called under potemkin progress, still in EDT but the progress is visible @OptIn(KtAllowAnalysisFromWriteAction::class, KtAllowAnalysisOnEdt::class) override fun generateDeclaration(config: ExtractionGeneratorConfiguration): ExtractionResult { allowAnalysisOnEdt {