Skip to content

Commit 9cd06ac

Browse files
committed
Separate Copy and Paste feature detection.
1 parent c804e4e commit 9cd06ac

3 files changed

Lines changed: 16 additions & 7 deletions

File tree

src/vs/base/browser/canIUse.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as browser from 'vs/base/browser/browser';
7+
import * as platform from 'vs/base/common/platform';
78

89
/**
910
* Browser feature we can support in current platform, browser and environment.
1011
*/
1112
export const BrowserFeatures = {
1213
clipboard: {
13-
access: !!(navigator
14-
&& navigator.clipboard
15-
&& navigator.clipboard.readText
16-
&& navigator.clipboard.writeText),
14+
writeText: (
15+
platform.isNative
16+
|| document.queryCommandSupported('copy')
17+
|| !!(navigator && navigator.clipboard && navigator.clipboard.writeText)
18+
),
19+
readText: (
20+
platform.isNative
21+
|| !!(navigator && navigator.clipboard && navigator.clipboard.readText)
22+
),
1723
richText: (() => {
1824
if (browser.isIE) {
1925
return false;

src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -553,12 +553,13 @@ actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FindPrevious, Fi
553553
}, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_FOCUSED), 'Terminal: Find previous', category);
554554

555555
// Commands miht be affected by Web restrictons
556-
if (BrowserFeatures.clipboard.access) {
556+
if (BrowserFeatures.clipboard.writeText) {
557557
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(CopyTerminalSelectionAction, CopyTerminalSelectionAction.ID, CopyTerminalSelectionAction.LABEL, {
558558
primary: KeyMod.CtrlCmd | KeyCode.KEY_C,
559559
linux: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_C }
560560
}, ContextKeyExpr.and(KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, KEYBINDING_CONTEXT_TERMINAL_FOCUS)), 'Terminal: Copy Selection', category);
561-
561+
}
562+
if (BrowserFeatures.clipboard.readText) {
562563
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(TerminalPasteAction, TerminalPasteAction.ID, TerminalPasteAction.LABEL, {
563564
primary: KeyMod.CtrlCmd | KeyCode.KEY_V,
564565
linux: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_V }

src/vs/workbench/contrib/terminal/browser/terminalPanel.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,10 @@ export class TerminalPanel extends Panel {
144144
this._copyContextMenuAction = this._instantiationService.createInstance(CopyTerminalSelectionAction, CopyTerminalSelectionAction.ID, CopyTerminalSelectionAction.SHORT_LABEL);
145145

146146
const clipboardActions = [];
147-
if (BrowserFeatures.clipboard.access) {
147+
if (BrowserFeatures.clipboard.writeText) {
148148
clipboardActions.push(this._copyContextMenuAction);
149+
}
150+
if (BrowserFeatures.clipboard.readText) {
149151
clipboardActions.push(this._instantiationService.createInstance(TerminalPasteAction, TerminalPasteAction.ID, TerminalPasteAction.SHORT_LABEL));
150152
}
151153

0 commit comments

Comments
 (0)