From b02547dd6aab84472603c768bc7c859e9b44fb02 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 18 Jan 2018 17:07:12 +0300 Subject: [PATCH] lst: do not register duplicated UndoableActions * do not use TransparentAction to avoid merging with unrelated commands --- .../openapi/vcs/ex/PartialLocalLineStatusTracker.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt index ab0c6b8e410e..7ce9dbcd5e43 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt @@ -64,6 +64,7 @@ class PartialLocalLineStatusTracker(project: Project, ) : LineStatusTracker(project, document, virtualFile, mode), ChangeListWorker.PartialChangeTracker { private val changeListManager = ChangeListManagerImpl.getInstanceImpl(project) private val projectLevelVcsManager: ProjectLevelVcsManager = ProjectLevelVcsManager.getInstance(project) + private val undoManager = UndoManager.getInstance(project) override val renderer = MyLineStatusMarkerRenderer(this) @@ -212,6 +213,7 @@ class PartialLocalLineStatusTracker(project: Project, private inner class MyUndoDocumentListener : DocumentListener { override fun beforeDocumentChange(event: DocumentEvent?) { if (hasUndoInCommand) return + if (undoManager.isRedoInProgress || undoManager.isUndoInProgress) return hasUndoInCommand = true registerUndoAction(true) @@ -219,13 +221,11 @@ class PartialLocalLineStatusTracker(project: Project, } private inner class MyUndoCommandListener : CommandListener { - override fun commandFinished(event: CommandEvent?) { - if (hasUndoInCommand && CommandProcessor.getInstance().currentCommand == null) { + override fun beforeCommandFinished(event: CommandEvent?) { + if (hasUndoInCommand) { hasUndoInCommand = false - CommandProcessor.getInstance().runUndoTransparentAction { - registerUndoAction(false) - } + registerUndoAction(false) } } } @@ -234,7 +234,7 @@ class PartialLocalLineStatusTracker(project: Project, val undoState = documentTracker.readLock { blocks.map { RangeState(it.range, it.marker.changelistId) } } - UndoManager.getInstance(project).undoableActionPerformed(MyUndoableAction(project, document, undoState, undo)) + undoManager.undoableActionPerformed(MyUndoableAction(project, document, undoState, undo)) } private inner class MyBackgroundVfsOperationListener : BackgroundVfsOperationListener {