diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.ts index 561ac99a38369d961249668d671f35d4cdc6f268..89f5333cff67bdd1715ced74a66e703a73b7d4c0 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.ts @@ -124,7 +124,7 @@ export interface ITerminalInstance { dispose(): void; copySelection(): void; - focus(): void; + focus(force?: boolean): void; paste(): void; sendText(text: string, addNewLine: boolean): void; scrollDown(): void; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index f08779abe1b2722504b05f86cb205b7cff4054d9..bbf6736a5b2a55460d8b991486fa908e4ede5da8 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -167,8 +167,15 @@ export class TerminalInstance implements ITerminalInstance { this.onExitCallback(this); } - public focus(): void { - // TODO: Implement + // TODO: Document, the purpose of force is not clear + public focus(force?: boolean): void { + if (!this.xterm) { + return; + } + let text = window.getSelection().toString(); + if (!text || force) { + this.xterm.focus(); + } } public paste(): void { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 3018aaf6906dd6f7a71bea66b1442b24ef161f13..c9370cd6790589d77ad72dc492289bb2f82c81e0 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -150,7 +150,7 @@ export class TerminalService implements ITerminalService { }); } else { if (focus) { - panel.focus(); + this.getActiveInstance().focus(true); } complete(void 0); //complete(panel);