From 9d88db83ee29711d06df40eeb98fce3ca9d36d60 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Fri, 24 Sep 2021 23:05:05 +0200 Subject: [PATCH] fixed #3961 - broadcast more actions when "focus all panes" is active --- .../src/api/baseTerminalTab.component.ts | 72 +++++++++++-------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/tabby-terminal/src/api/baseTerminalTab.component.ts b/tabby-terminal/src/api/baseTerminalTab.component.ts index ef3e478e..3a6ebba4 100644 --- a/tabby-terminal/src/api/baseTerminalTab.component.ts +++ b/tabby-terminal/src/api/baseTerminalTab.component.ts @@ -201,15 +201,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit this.frontend.clearSelection() this.notifications.notice('Copied') } else { - if (this.parent && this.parent instanceof SplitTabComponent && this.parent._allFocusMode) { - for (const tab of this.parent.getAllTabs()) { - if (tab instanceof BaseTerminalTabComponent) { - tab.sendInput('\x03') - } - } - } else { - this.sendInput('\x03') - } + this.forEachFocusedTerminalPane(tab => tab.sendInput('\x03')) } break case 'copy': @@ -218,46 +210,54 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit this.notifications.notice('Copied') break case 'paste': - this.paste() + this.forEachFocusedTerminalPane(tab => tab.paste()) break case 'select-all': this.frontend?.selectAll() break case 'clear': - this.frontend?.clear() + this.forEachFocusedTerminalPane(tab => tab.frontend?.clear()) break case 'zoom-in': - this.zoomIn() + this.forEachFocusedTerminalPane(tab => tab.zoomIn()) break case 'zoom-out': - this.zoomOut() + this.forEachFocusedTerminalPane(tab => tab.zoomOut()) break case 'reset-zoom': - this.resetZoom() + this.forEachFocusedTerminalPane(tab => tab.resetZoom()) break case 'previous-word': - this.sendInput({ - [Platform.Windows]: '\x1b[1;5D', - [Platform.macOS]: '\x1bb', - [Platform.Linux]: '\x1bb', - }[this.hostApp.platform]) + this.forEachFocusedTerminalPane(tab => { + tab.sendInput({ + [Platform.Windows]: '\x1b[1;5D', + [Platform.macOS]: '\x1bb', + [Platform.Linux]: '\x1bb', + }[this.hostApp.platform]) + }) break case 'next-word': - this.sendInput({ - [Platform.Windows]: '\x1b[1;5C', - [Platform.macOS]: '\x1bf', - [Platform.Linux]: '\x1bf', - }[this.hostApp.platform]) + this.forEachFocusedTerminalPane(tab => { + tab.sendInput({ + [Platform.Windows]: '\x1b[1;5C', + [Platform.macOS]: '\x1bf', + [Platform.Linux]: '\x1bf', + }[this.hostApp.platform]) + }) break case 'delete-previous-word': - this.sendInput('\x1b\x7f') + this.forEachFocusedTerminalPane(tab => { + tab.sendInput('\x1b\x7f') + }) break case 'delete-next-word': - this.sendInput({ - [Platform.Windows]: '\x1bd\x1b[3;5~', - [Platform.macOS]: '\x1bd', - [Platform.Linux]: '\x1bd', - }[this.hostApp.platform]) + this.forEachFocusedTerminalPane(tab => { + tab.sendInput({ + [Platform.Windows]: '\x1bd\x1b[3;5~', + [Platform.macOS]: '\x1bd', + [Platform.Linux]: '\x1bd', + }[this.hostApp.platform]) + }) break case 'search': this.showSearchPanel = true @@ -742,4 +742,16 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit 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) + } + } } -- GitLab