fixed #3961 - broadcast more actions when "focus all panes" is active

上级 e474ad57
...@@ -201,15 +201,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit ...@@ -201,15 +201,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
this.frontend.clearSelection() this.frontend.clearSelection()
this.notifications.notice('Copied') this.notifications.notice('Copied')
} else { } else {
if (this.parent && this.parent instanceof SplitTabComponent && this.parent._allFocusMode) { this.forEachFocusedTerminalPane(tab => tab.sendInput('\x03'))
for (const tab of this.parent.getAllTabs()) {
if (tab instanceof BaseTerminalTabComponent) {
tab.sendInput('\x03')
}
}
} else {
this.sendInput('\x03')
}
} }
break break
case 'copy': case 'copy':
...@@ -218,46 +210,54 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit ...@@ -218,46 +210,54 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
this.notifications.notice('Copied') this.notifications.notice('Copied')
break break
case 'paste': case 'paste':
this.paste() this.forEachFocusedTerminalPane(tab => tab.paste())
break break
case 'select-all': case 'select-all':
this.frontend?.selectAll() this.frontend?.selectAll()
break break
case 'clear': case 'clear':
this.frontend?.clear() this.forEachFocusedTerminalPane(tab => tab.frontend?.clear())
break break
case 'zoom-in': case 'zoom-in':
this.zoomIn() this.forEachFocusedTerminalPane(tab => tab.zoomIn())
break break
case 'zoom-out': case 'zoom-out':
this.zoomOut() this.forEachFocusedTerminalPane(tab => tab.zoomOut())
break break
case 'reset-zoom': case 'reset-zoom':
this.resetZoom() this.forEachFocusedTerminalPane(tab => tab.resetZoom())
break break
case 'previous-word': case 'previous-word':
this.sendInput({ this.forEachFocusedTerminalPane(tab => {
[Platform.Windows]: '\x1b[1;5D', tab.sendInput({
[Platform.macOS]: '\x1bb', [Platform.Windows]: '\x1b[1;5D',
[Platform.Linux]: '\x1bb', [Platform.macOS]: '\x1bb',
}[this.hostApp.platform]) [Platform.Linux]: '\x1bb',
}[this.hostApp.platform])
})
break break
case 'next-word': case 'next-word':
this.sendInput({ this.forEachFocusedTerminalPane(tab => {
[Platform.Windows]: '\x1b[1;5C', tab.sendInput({
[Platform.macOS]: '\x1bf', [Platform.Windows]: '\x1b[1;5C',
[Platform.Linux]: '\x1bf', [Platform.macOS]: '\x1bf',
}[this.hostApp.platform]) [Platform.Linux]: '\x1bf',
}[this.hostApp.platform])
})
break break
case 'delete-previous-word': case 'delete-previous-word':
this.sendInput('\x1b\x7f') this.forEachFocusedTerminalPane(tab => {
tab.sendInput('\x1b\x7f')
})
break break
case 'delete-next-word': case 'delete-next-word':
this.sendInput({ this.forEachFocusedTerminalPane(tab => {
[Platform.Windows]: '\x1bd\x1b[3;5~', tab.sendInput({
[Platform.macOS]: '\x1bd', [Platform.Windows]: '\x1bd\x1b[3;5~',
[Platform.Linux]: '\x1bd', [Platform.macOS]: '\x1bd',
}[this.hostApp.platform]) [Platform.Linux]: '\x1bd',
}[this.hostApp.platform])
})
break break
case 'search': case 'search':
this.showSearchPanel = true this.showSearchPanel = true
...@@ -742,4 +742,16 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit ...@@ -742,4 +742,16 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
this.startSpinner() this.startSpinner()
} }
} }
protected forEachFocusedTerminalPane (cb: (tab: BaseTerminalTabComponent) => void): void {
if (this.parent && this.parent instanceof SplitTabComponent && this.parent._allFocusMode) {
for (const tab of this.parent.getAllTabs()) {
if (tab instanceof BaseTerminalTabComponent) {
cb(tab)
}
}
} else {
cb(this)
}
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册