From bb618442c023d97007e6b240a4dd12a59c777dcd Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Sat, 12 Oct 2019 20:30:55 +0300 Subject: [PATCH] vcs: non-modal: Save commit message for current change list on project close (IDEA-219042) GitOrigin-RevId: d267ddab386b5f1fd7a6243088a0c9c3e6702d5e --- .../ChangesViewCommitWorkflowHandler.kt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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 0355a9055032..ddcaca8755e9 100644 --- a/platform/vcs-impl/src/com/intellij/vcs/commit/ChangesViewCommitWorkflowHandler.kt +++ b/platform/vcs-impl/src/com/intellij/vcs/commit/ChangesViewCommitWorkflowHandler.kt @@ -1,8 +1,12 @@ // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.vcs.commit +import com.intellij.application.subscribe import com.intellij.openapi.Disposable import com.intellij.openapi.actionSystem.* +import com.intellij.openapi.project.Project +import com.intellij.openapi.project.ProjectManager +import com.intellij.openapi.project.ProjectManagerListener import com.intellij.openapi.util.Disposer import com.intellij.openapi.vcs.CheckinProjectPanel import com.intellij.openapi.vcs.FilePath @@ -22,7 +26,8 @@ private fun Collection.toPartialAwareSet() = THashSet(this, ChangeListCh class ChangesViewCommitWorkflowHandler( override val workflow: ChangesViewCommitWorkflow, override val ui: ChangesViewCommitWorkflowUi -) : AbstractCommitWorkflowHandler() { +) : AbstractCommitWorkflowHandler(), + ProjectManagerListener { override val commitPanel: CheckinProjectPanel = CommitProjectPanelAdapter(this) override val amendCommitHandler: AmendCommitHandler = AmendCommitHandlerImpl(this) @@ -56,6 +61,8 @@ class ChangesViewCommitWorkflowHandler( ui.inclusionModel = inclusionModel Disposer.register(inclusionModel, Disposable { ui.inclusionModel = null }) + ProjectManager.TOPIC.subscribe(this, this) + vcsesChanged() // as currently vcses are set before handler subscribes to corresponding event } @@ -211,6 +218,17 @@ class ChangesViewCommitWorkflowHandler( 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 other events - like "settings changed to use commit dialog" + override fun dispose() = saveStateBeforeDispose() + + private fun saveStateBeforeDispose() { + saveCommitMessage(false) + currentChangeList = null + } + interface ActivityListener : EventListener { fun activityStateChanged() }