feat: insert new terminal tab at the correct index in terminal tab manager

This commit is contained in:
hstyi
2025-11-13 09:30:32 +08:00
committed by hstyi
parent 9e2e104baa
commit 04bece21ff
4 changed files with 14 additions and 4 deletions

View File

@@ -3,5 +3,5 @@ package app.termora
import app.termora.actions.AnActionEvent import app.termora.actions.AnActionEvent
import java.util.* 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) AnActionEvent(source, String(), event)

View File

@@ -236,7 +236,7 @@ class TerminalTabbed(
if (tab is HostTerminalTab) { if (tab is HostTerminalTab) {
actionManager actionManager
.getAction(OpenHostAction.OPEN_HOST) .getAction(OpenHostAction.OPEN_HOST)
.actionPerformed(OpenHostActionEvent(this, tab.host, evt)) .actionPerformed(OpenHostActionEvent(this, tab.host, evt, tabIndex + 1))
} }
} }

View File

@@ -56,7 +56,12 @@ class OpenHostAction : AnAction() {
if (tab == null) return if (tab == null) return
terminalTabbedManager.addTerminalTab(tab) if (evt.tabIndex >= 0) {
terminalTabbedManager.addTerminalTab(evt.tabIndex, tab)
} else {
terminalTabbedManager.addTerminalTab(tab)
}
if (tab is PtyHostTerminalTab) { if (tab is PtyHostTerminalTab) {
tab.start() tab.start()
} }

View File

@@ -27,9 +27,14 @@ class CloneSessionTerminalTabbedContextMenuExtension private constructor() : Ter
cloneSession.addActionListener(object : AnAction() { cloneSession.addActionListener(object : AnAction() {
override fun actionPerformed(evt: AnActionEvent) { override fun actionPerformed(evt: AnActionEvent) {
val terminalTabbedManager = evt.getData(DataProviders.TerminalTabbedManager) ?: return val terminalTabbedManager = evt.getData(DataProviders.TerminalTabbedManager) ?: return
val index = terminalTabbedManager.indexOfTerminalTab(tab)
val handler = c.copy(channel = null) val handler = c.copy(channel = null)
val newTab = SSHTerminalTab(windowScope, tab.host, handler) val newTab = SSHTerminalTab(windowScope, tab.host, handler)
terminalTabbedManager.addTerminalTab(newTab) if (index >= 0) {
terminalTabbedManager.addTerminalTab(index + 1, newTab)
} else {
terminalTabbedManager.addTerminalTab(newTab)
}
newTab.start() newTab.start()
} }
}) })