mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] extract function: perform declaration generation under potemkin progress
- to avoid freezes on EDT KTIJ-26164 GitOrigin-RevId: f1f3bc146ae3849d5e0362e3a84af93900a837d0
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d0cf04ecf0
commit
76d4b7cd39
+10
-2
@@ -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<KotlinType,
|
||||
@@ -30,7 +31,14 @@ abstract class IExtractionEngineHelper<KotlinType,
|
||||
|
||||
fun doRefactor(config: Config, onFinish: (Result) -> Unit = {}) {
|
||||
val project = config.descriptor.extractionData.project
|
||||
onFinish(project.executeWriteCommand<Result>(operationName) { generateDeclaration(config) })
|
||||
val result = project.executeCommand<Result?>(operationName) {
|
||||
var generatedDeclaration: Result? = null
|
||||
ApplicationManagerEx.getApplicationEx().runWriteActionWithCancellableProgressInDispatchThread("", project, null) {
|
||||
generatedDeclaration = generateDeclaration(config)
|
||||
}
|
||||
generatedDeclaration
|
||||
} ?: return
|
||||
onFinish(result)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user