1
1
mirror of https://github.com/Eugeny/tabby.git synced 2024-11-23 05:03:36 +03:00

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

This commit is contained in:
Eugene Pankov 2021-09-24 23:05:05 +02:00
parent e474ad573a
commit 9d88db83ee
No known key found for this signature in database
GPG Key ID: 5896FCBBDD1CF4F4

View File

@ -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)
}
}
}