From 997d65caac7ee2774f0913f4707d0c53baf1db56 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Mon, 14 Jan 2019 01:13:05 +0300 Subject: [PATCH] terminal: fix persistent tabs - do not close tabs from confirmation listener --- .../plugins/terminal/TerminalTabCloseListener.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalTabCloseListener.kt b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalTabCloseListener.kt index 684deab0db1f..c716e52660a6 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalTabCloseListener.kt +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalTabCloseListener.kt @@ -9,7 +9,7 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project import com.intellij.ui.content.Content -class TerminalTabCloseListener(content: Content, +class TerminalTabCloseListener(val content: Content, val project: Project) : BaseContentCloseListener(content, project) { override fun disposeContent(content: Content) { } @@ -18,7 +18,8 @@ class TerminalTabCloseListener(content: Content, if (modal || ApplicationManager.getApplication().isDisposeInProgress) { return true } - if (!TerminalView.getWidgetByContent(content).isSessionRunning) { + val widget = TerminalView.getWidgetByContent(content) + if (widget == null || !widget.isSessionRunning) { return true } val proxy = NopProcessHandler().apply { startNotify() } @@ -27,4 +28,8 @@ class TerminalTabCloseListener(content: Content, val result = TerminateRemoteProcessDialog.show(project, "Terminal ${content.displayName}", proxy) return result != null } + + override fun canClose(project: Project): Boolean { + return project === this.project && closeQuery(this.content, true) + } }