[vcs] postpone saving document until non modal

^KTIJ-31597 fixed

GitOrigin-RevId: d90d4daa2ca517891e9b1dff1457e8c695cc8fca
This commit is contained in:
Anna Kozlova
2024-10-11 15:44:53 +00:00
committed by intellij-monorepo-bot
parent df8fd3721f
commit 26c4f80cdd
@@ -235,11 +235,12 @@ abstract class LocalLineStatusTrackerImpl<R : Range>(
fun saveDocumentWhenUnchanged(project: Project, document: Document) {
if (GeneralSettings.getInstance().isSaveOnFrameDeactivation) {
// Use 'invokeLater' to avoid saving inside document change event processing and deadlock with CLM.
// Override ANY modality (that is abused by LineStatusTrackerManager) to prevent errors in TransactionGuard.
var modalityState = ModalityState.defaultModalityState()
if (modalityState == ModalityState.any()) modalityState = ModalityState.nonModal()
if (ModalityState.current() != ModalityState.nonModal()) {
println("Saving document from non-modal")
Throwable().printStackTrace()
}
ApplicationManager.getApplication().invokeLater(Runnable {
FileDocumentManager.getInstance().saveDocument(document)
}, modalityState, project.disposed)
}, ModalityState.nonModal(), project.disposed)
}
}