From ae64979f34ad6c56ae3caa6b7354449d53d9d6f8 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Wed, 10 Oct 2018 19:09:31 +0300 Subject: [PATCH] terminal: restore tabs only once at startup, restore tab selection --- .../terminal/TerminalArrangementManager.java | 3 ++- .../terminal/TerminalToolWindowFactory.java | 2 +- .../plugins/terminal/TerminalView.java | 26 ++++++++----------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalArrangementManager.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalArrangementManager.java index 0ef822d2e1f2..b010079f2f84 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalArrangementManager.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalArrangementManager.java @@ -3,6 +3,7 @@ package org.jetbrains.plugins.terminal; import com.intellij.openapi.components.*; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.registry.Registry; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,7 +32,7 @@ public class TerminalArrangementManager implements PersistentStateComponent states = state != null ? state.myTabStates : null; + List states = arrangementState != null ? arrangementState.myTabStates : null; if (ContainerUtil.isEmpty(states)) { newTab(null); } @@ -103,23 +101,21 @@ public class TerminalView { for (TerminalTabState tabState : states) { createNewSession(myTerminalRunner, tabState); } + ContentManager contentManager = toolWindow.getContentManager(); + Content content = contentManager.getContent(arrangementState.mySelectedTabIndex); + if (content != null) { + contentManager.setSelectedContent(content); + } } myProject.getMessageBus().connect().subscribe(ToolWindowManagerListener.TOPIC, new ToolWindowManagerListener() { @Override public void stateChanged() { - ToolWindow window = ToolWindowManager.getInstance(myProject).getToolWindow(TerminalToolWindowFactory.TOOL_WINDOW_ID); - if (window != null) { - boolean visible = window.isVisible(); - if (visible) { - if (myToolWindow.getContentManager().getContentCount() == 0) { - initTerminal(window); - } - else if (myFileToOpen != null) { - //myTerminalRunner.openSessionForFile(myTerminalWidget, myFileToOpen); - } - myFileToOpen = null; + if (toolWindow.isVisible()) { + if (myToolWindow.getContentManager().getContentCount() == 0) { + initTerminal(toolWindow, null); } + myFileToOpen = null; } } });