From 39389f77d08f178dc1e99f520f593ddc446a9776 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sun, 14 Nov 2021 10:59:08 +0100 Subject: [PATCH] added support for long-clicking for context menu when right click is set to paste (#4858) --- .../src/api/baseTerminalTab.component.ts | 28 ++++++++++++++++--- .../terminalSettingsTab.component.pug | 1 + 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/tabby-terminal/src/api/baseTerminalTab.component.ts b/tabby-terminal/src/api/baseTerminalTab.component.ts index 88b6d664..856e0fd3 100644 --- a/tabby-terminal/src/api/baseTerminalTab.component.ts +++ b/tabby-terminal/src/api/baseTerminalTab.component.ts @@ -565,13 +565,27 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit this.termContainerSubscriptions.cancelAll() } - protected async handleRightClick (event: MouseEvent): Promise { + private rightMouseDownTime = 0 + + protected async handleRightMouseDown (event: MouseEvent): Promise { event.preventDefault() event.stopPropagation() + this.rightMouseDownTime = Date.now() if (this.config.store.terminal.rightClick === 'menu') { this.platform.popupContextMenu(await this.buildContextMenu(), event) - } else if (this.config.store.terminal.rightClick === 'paste') { - this.paste() + } + } + + protected async handleRightMouseUp (event: MouseEvent): Promise { + event.preventDefault() + event.stopPropagation() + if (this.config.store.terminal.rightClick === 'paste') { + const duration = Date.now() - this.rightMouseDownTime + if (duration < 250) { + this.paste() + } else { + this.platform.popupContextMenu(await this.buildContextMenu(), event) + } } } @@ -611,7 +625,13 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit return } if (event.which === 3 || event.which === 1 && event.ctrlKey) { - this.handleRightClick(event) + this.handleRightMouseDown(event) + return + } + } + if (event.type === 'mouseup') { + if (event.which === 3 || event.which === 1 && event.ctrlKey) { + this.handleRightMouseUp(event) return } } diff --git a/tabby-terminal/src/components/terminalSettingsTab.component.pug b/tabby-terminal/src/components/terminalSettingsTab.component.pug index 670c6b22..2ada3139 100644 --- a/tabby-terminal/src/components/terminalSettingsTab.component.pug +++ b/tabby-terminal/src/components/terminalSettingsTab.component.pug @@ -49,6 +49,7 @@ h3.mb-3 Terminal .form-line .header .title Right click + .description(*ngIf='config.store.terminal.rightClick == "paste"') Long-click for context menu .btn-group( [(ngModel)]='config.store.terminal.rightClick', (ngModelChange)='config.save()',