From 1dbdc088b979722ab94cc092430b9937bd278ca5 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Sun, 13 Oct 2019 04:02:19 +0300 Subject: [PATCH] vcs: non-modal: Save commit options on project close (IDEA-218098) GitOrigin-RevId: 9b5c41fe0b33e6dadf765c52d622f1f1675f8af9 --- .../ChangesViewCommitWorkflowHandler.kt | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/vcs/commit/ChangesViewCommitWorkflowHandler.kt b/platform/vcs-impl/src/com/intellij/vcs/commit/ChangesViewCommitWorkflowHandler.kt index ddcaca8755e9..4018ce1447ee 100644 --- a/platform/vcs-impl/src/com/intellij/vcs/commit/ChangesViewCommitWorkflowHandler.kt +++ b/platform/vcs-impl/src/com/intellij/vcs/commit/ChangesViewCommitWorkflowHandler.kt @@ -48,7 +48,6 @@ class ChangesViewCommitWorkflowHandler( } init { - Disposer.register(this, Disposable { workflow.disposeCommitOptions() }) Disposer.register(this, inclusionModel) Disposer.register(ui, this) @@ -211,24 +210,36 @@ class ChangesViewCommitWorkflowHandler( override fun addUnversionedFiles(): Boolean = addUnversionedFiles(workflow.getAffectedChangeList(getIncludedChanges())) - override fun saveCommitOptions(): Boolean { - ensureCommitOptions() + override fun saveCommitOptions(): Boolean = saveCommitOptions(true) + + private fun saveCommitOptions(isEnsureOptionsCreated: Boolean): Boolean { + if (isEnsureOptionsCreated) ensureCommitOptions() return super.saveCommitOptions() } override fun saveCommitMessage(success: Boolean) = commitMessagePolicy.save(currentChangeList, getCommitMessage(), success) - // save state on project close - using this method ensures change list comment is updated before project state persisting - override fun projectClosingBeforeSave(project: Project) = saveStateBeforeDispose() + // save state on project close + // using this method ensures change list comment and commit options are updated before project state persisting + override fun projectClosingBeforeSave(project: Project) = dispose() // save state on other events - like "settings changed to use commit dialog" - override fun dispose() = saveStateBeforeDispose() + override fun dispose() { + saveStateBeforeDispose() + disposeCommitOptions() + } private fun saveStateBeforeDispose() { + saveCommitOptions(false) saveCommitMessage(false) currentChangeList = null } + private fun disposeCommitOptions() { + workflow.disposeCommitOptions() + areCommitOptionsCreated = false + } + interface ActivityListener : EventListener { fun activityStateChanged() } @@ -239,8 +250,7 @@ class ChangesViewCommitWorkflowHandler( override fun onFailure(errors: List) = resetState() private fun resetState() { - workflow.disposeCommitOptions() - areCommitOptionsCreated = false + disposeCommitOptions() workflow.clearCommitContext() initCommitHandlers()