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) + } }