diff --git a/src/main/kotlin/app/termora/OpenHostActionEvent.kt b/src/main/kotlin/app/termora/OpenHostActionEvent.kt index 0d6df45..a81ee3c 100644 --- a/src/main/kotlin/app/termora/OpenHostActionEvent.kt +++ b/src/main/kotlin/app/termora/OpenHostActionEvent.kt @@ -3,5 +3,5 @@ package app.termora import app.termora.actions.AnActionEvent import java.util.* -class OpenHostActionEvent(source: Any, val host: Host, event: EventObject) : +class OpenHostActionEvent(source: Any, val host: Host, event: EventObject, val tabIndex: Int = -1) : AnActionEvent(source, String(), event) \ No newline at end of file diff --git a/src/main/kotlin/app/termora/TerminalTabbed.kt b/src/main/kotlin/app/termora/TerminalTabbed.kt index 5c1295d..c0e7d32 100644 --- a/src/main/kotlin/app/termora/TerminalTabbed.kt +++ b/src/main/kotlin/app/termora/TerminalTabbed.kt @@ -236,7 +236,7 @@ class TerminalTabbed( if (tab is HostTerminalTab) { actionManager .getAction(OpenHostAction.OPEN_HOST) - .actionPerformed(OpenHostActionEvent(this, tab.host, evt)) + .actionPerformed(OpenHostActionEvent(this, tab.host, evt, tabIndex + 1)) } } diff --git a/src/main/kotlin/app/termora/actions/OpenHostAction.kt b/src/main/kotlin/app/termora/actions/OpenHostAction.kt index 8c18ee0..090a136 100644 --- a/src/main/kotlin/app/termora/actions/OpenHostAction.kt +++ b/src/main/kotlin/app/termora/actions/OpenHostAction.kt @@ -56,7 +56,12 @@ class OpenHostAction : AnAction() { if (tab == null) return - terminalTabbedManager.addTerminalTab(tab) + if (evt.tabIndex >= 0) { + terminalTabbedManager.addTerminalTab(evt.tabIndex, tab) + } else { + terminalTabbedManager.addTerminalTab(tab) + } + if (tab is PtyHostTerminalTab) { tab.start() } diff --git a/src/main/kotlin/app/termora/plugin/internal/ssh/CloneSessionTerminalTabbedContextMenuExtension.kt b/src/main/kotlin/app/termora/plugin/internal/ssh/CloneSessionTerminalTabbedContextMenuExtension.kt index e9c7851..e743cfe 100644 --- a/src/main/kotlin/app/termora/plugin/internal/ssh/CloneSessionTerminalTabbedContextMenuExtension.kt +++ b/src/main/kotlin/app/termora/plugin/internal/ssh/CloneSessionTerminalTabbedContextMenuExtension.kt @@ -27,9 +27,14 @@ class CloneSessionTerminalTabbedContextMenuExtension private constructor() : Ter cloneSession.addActionListener(object : AnAction() { override fun actionPerformed(evt: AnActionEvent) { val terminalTabbedManager = evt.getData(DataProviders.TerminalTabbedManager) ?: return + val index = terminalTabbedManager.indexOfTerminalTab(tab) val handler = c.copy(channel = null) val newTab = SSHTerminalTab(windowScope, tab.host, handler) - terminalTabbedManager.addTerminalTab(newTab) + if (index >= 0) { + terminalTabbedManager.addTerminalTab(index + 1, newTab) + } else { + terminalTabbedManager.addTerminalTab(newTab) + } newTab.start() } })