mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-187180 vcs: Automatically close the commit tool window after commit in window/float mode
(cherry picked from commit e45f9bfccfd77d38a4bb26630aacb69fcb8aee0d) IJ-MR-163526 GitOrigin-RevId: 8c76c28621310bb5ece25dcd117bcde537fae54d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ede0aef024
commit
2da2caf3db
+24
@@ -22,6 +22,7 @@ import com.intellij.ui.content.ContentManagerEvent
|
||||
import com.intellij.ui.content.ContentManagerListener
|
||||
import com.intellij.util.IJSwingUtilities
|
||||
import com.intellij.util.ObjectUtils.tryCast
|
||||
import com.intellij.util.concurrency.annotations.RequiresEdt
|
||||
import com.intellij.util.messages.MessageBusConnection
|
||||
import com.intellij.vcs.commit.CommitMode
|
||||
import com.intellij.vcs.commit.CommitModeManager
|
||||
@@ -367,3 +368,26 @@ fun MessageBusConnection.subscribeOnVcsToolWindowLayoutChanges(updateLayout: Run
|
||||
override fun stateChanged(toolWindowManager: ToolWindowManager) = updateLayout.run()
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides windowed/floating Commit TW when the commit started. Only for default non-modal commit mode
|
||||
*/
|
||||
@RequiresEdt
|
||||
internal fun hideWindowedFloatingTwOnCommit(project: Project) {
|
||||
val commitTw = getCommitToolWindow(project) ?: return
|
||||
if (!commitTw.isActive || !commitTw.isVisible) return
|
||||
|
||||
val commitTwType = commitTw.type
|
||||
|
||||
if (commitTwType.isInWindow()) {
|
||||
commitTw.hide()
|
||||
}
|
||||
}
|
||||
|
||||
private fun ToolWindowType.isInWindow(): Boolean {
|
||||
return this == ToolWindowType.WINDOWED || this == ToolWindowType.FLOATING
|
||||
}
|
||||
|
||||
private fun getCommitToolWindow(project: Project): ToolWindow? {
|
||||
return ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.COMMIT)
|
||||
}
|
||||
@@ -33,6 +33,7 @@ import com.intellij.openapi.vcs.changes.CommitExecutor
|
||||
import com.intellij.openapi.vcs.changes.actions.DefaultCommitExecutorAction
|
||||
import com.intellij.openapi.vcs.changes.ui.ChangesViewContentManager
|
||||
import com.intellij.openapi.vcs.changes.ui.ChangesViewContentManager.Companion.LOCAL_CHANGES
|
||||
import com.intellij.openapi.vcs.changes.ui.hideWindowedFloatingTwOnCommit
|
||||
import com.intellij.openapi.vcs.checkin.*
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
@@ -300,6 +301,7 @@ abstract class NonModalCommitWorkflowHandler<W : NonModalCommitWorkflow, U : Non
|
||||
|
||||
@ApiStatus.Internal
|
||||
override suspend fun doExecuteSession(sessionInfo: CommitSessionInfo, commitInfo: DynamicCommitInfo): Boolean {
|
||||
hideWindowedFloatingTwOnCommit(project)
|
||||
if (!sessionInfo.isVcsCommit) {
|
||||
return workflow.executeSession(sessionInfo, commitInfo)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user