mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
terminal: allow tabs saving after tabs are restored (IDEA-CR-37863)
This commit is contained in:
@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@State(name = "TerminalArrangementManager", storages = {
|
||||
@Storage(StoragePathMacros.CACHE_FILE),
|
||||
@Storage(StoragePathMacros.CACHE_FILE)
|
||||
})
|
||||
public class TerminalArrangementManager implements PersistentStateComponent<TerminalArrangementState> {
|
||||
|
||||
@@ -33,7 +33,11 @@ public class TerminalArrangementManager implements PersistentStateComponent<Term
|
||||
@Nullable
|
||||
@Override
|
||||
public TerminalArrangementState getState() {
|
||||
return isAvailable() ? calcArrangementState() : null;
|
||||
if (!isAvailable() || myTerminalToolWindow == null) {
|
||||
// do not save state, reuse previously stored state
|
||||
return null;
|
||||
}
|
||||
return calcArrangementState(myTerminalToolWindow);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,13 +53,9 @@ public class TerminalArrangementManager implements PersistentStateComponent<Term
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private TerminalArrangementState calcArrangementState() {
|
||||
private TerminalArrangementState calcArrangementState(@NotNull ToolWindow terminalToolWindow) {
|
||||
TerminalArrangementState arrangementState = new TerminalArrangementState();
|
||||
if (myTerminalToolWindow == null) {
|
||||
LOG.warn("Unavailable " + TerminalToolWindowFactory.TOOL_WINDOW_ID + " toolwindow");
|
||||
return arrangementState;
|
||||
}
|
||||
ContentManager contentManager = myTerminalToolWindow.getContentManager();
|
||||
ContentManager contentManager = terminalToolWindow.getContentManager();
|
||||
for (Content content : contentManager.getContents()) {
|
||||
TerminalTabState tabState = new TerminalTabState();
|
||||
tabState.myTabName = content.getTabName();
|
||||
|
||||
@@ -31,7 +31,8 @@ public class TerminalToolWindowFactory implements ToolWindowFactory, DumbAware {
|
||||
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
|
||||
TerminalView terminalView = TerminalView.getInstance(project);
|
||||
TerminalArrangementManager arrangementManager = TerminalArrangementManager.getInstance(project);
|
||||
arrangementManager.setToolWindow(toolWindow);
|
||||
terminalView.initTerminal(toolWindow, arrangementManager.getArrangementState());
|
||||
// allow to save tabs after the tabs are restored
|
||||
arrangementManager.setToolWindow(toolWindow);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user