From 51897abbd8947657a65cd81aeec795f6be468dcd Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Mon, 14 Jan 2019 01:11:55 +0300 Subject: [PATCH] terminal: do not show confirmation dialog if terminal was moved to editor --- .../org/jetbrains/plugins/terminal/TerminalView.java | 10 +++++++--- .../action/MoveTerminalSessionToEditorAction.kt | 5 ++--- .../arrangement/TerminalArrangementManager.java | 3 ++- .../arrangement/TerminalWorkingDirectoryManager.java | 9 +++++++-- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java index 5304fc379a7b..b902a6fa1aed 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java @@ -64,7 +64,6 @@ import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.Arrays; import java.util.List; -import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -323,9 +322,14 @@ public class TerminalView { } } - @NotNull + @Nullable public static JBTerminalWidget getWidgetByContent(@NotNull Content content) { - return Objects.requireNonNull(content.getUserData(TERMINAL_WIDGET_KEY)); + return content.getUserData(TERMINAL_WIDGET_KEY); + } + + public void detachWidgetAndRemoveContent(@NotNull Content content) { + content.putUserData(TERMINAL_WIDGET_KEY, null); + myToolWindow.getContentManager().removeContent(content, true); } /** diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/action/MoveTerminalSessionToEditorAction.kt b/plugins/terminal/src/org/jetbrains/plugins/terminal/action/MoveTerminalSessionToEditorAction.kt index 9ed4a1879abc..09a05b5d0735 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/action/MoveTerminalSessionToEditorAction.kt +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/action/MoveTerminalSessionToEditorAction.kt @@ -16,15 +16,14 @@ class MoveTerminalSessionToEditorAction : TerminalSessionContextMenuActionBase() val tabInfo = TabInfo(selectedContent!!.component) .setText(selectedContent.displayName) val terminalView = TerminalView.getInstance(e.project!!) - val terminalWidget = TerminalView.getWidgetByContent(selectedContent) + val terminalWidget = TerminalView.getWidgetByContent(selectedContent)!! val file = TerminalSessionVirtualFileImpl(tabInfo, terminalWidget, terminalView.terminalRunner.settingsProvider) tabInfo.setObject(file) file.putUserData(FileEditorManagerImpl.CLOSING_TO_REOPEN, java.lang.Boolean.TRUE) val fileEditor = FileEditorManager.getInstance(e.project!!).openFile(file, true).first() terminalWidget.moveDisposable(fileEditor) - - activeToolWindow.contentManager.removeContent(selectedContent, true) + terminalView.detachWidgetAndRemoveContent(selectedContent) file.putUserData(FileEditorManagerImpl.CLOSING_TO_REOPEN, null) } diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/arrangement/TerminalArrangementManager.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/arrangement/TerminalArrangementManager.java index 6e460f0365bb..68ca7ca5c8f2 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/arrangement/TerminalArrangementManager.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/arrangement/TerminalArrangementManager.java @@ -77,10 +77,11 @@ public class TerminalArrangementManager implements PersistentStateComponent