From cfbf71725cf9e626d21c9847fc517df7c877fc45 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 15 Aug 2016 13:05:25 +0200 Subject: [PATCH] add `ignoreFocusOut` option to showInputBox and showQuickPick, #9918 --- src/vs/vscode.d.ts | 12 +++++++++++- src/vs/workbench/api/node/extHostQuickOpen.ts | 3 ++- src/vs/workbench/api/node/mainThreadQuickOpen.ts | 1 + .../browser/parts/quickopen/quickOpenController.ts | 2 +- .../services/quickopen/common/quickOpenService.ts | 4 ++++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 46e761bc5ff..cd1041bfee4 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -1362,6 +1362,11 @@ declare namespace vscode { */ placeHolder?: string; + /** + * Set to `true` to keep the picker open when focus moves to another part of the editor or to another window. + */ + ignoreFocusOut?: boolean; + /** * An optional function that is invoked whenever an item is selected. */ @@ -1411,10 +1416,15 @@ declare namespace vscode { placeHolder?: string; /** - * Set to true to show a password prompt that will not show the typed value. + * Set to `true` to show a password prompt that will not show the typed value. */ password?: boolean; + /** + * Set to `true` to keep the input box open when focus moves to another part of the editor or to another window. + */ + ignoreFocusOut?: boolean; + /** * An optional function that will be called to valide input and to give a hint * to the user. diff --git a/src/vs/workbench/api/node/extHostQuickOpen.ts b/src/vs/workbench/api/node/extHostQuickOpen.ts index 7b16d9cb6a6..1efba761690 100644 --- a/src/vs/workbench/api/node/extHostQuickOpen.ts +++ b/src/vs/workbench/api/node/extHostQuickOpen.ts @@ -35,7 +35,8 @@ export class ExtHostQuickOpen extends ExtHostQuickOpenShape { autoFocus: { autoFocusFirstEntry: true }, placeHolder: options && options.placeHolder, matchOnDescription: options && options.matchOnDescription, - matchOnDetail: options && options.matchOnDetail + matchOnDetail: options && options.matchOnDetail, + ignoreFocusLost: options && options.ignoreFocusOut }); const promise = itemsPromise.then(items => { diff --git a/src/vs/workbench/api/node/mainThreadQuickOpen.ts b/src/vs/workbench/api/node/mainThreadQuickOpen.ts index cdcb7f2de16..a1dcc8583ed 100644 --- a/src/vs/workbench/api/node/mainThreadQuickOpen.ts +++ b/src/vs/workbench/api/node/mainThreadQuickOpen.ts @@ -83,6 +83,7 @@ export class MainThreadQuickOpen extends MainThreadQuickOpenShape { inputOptions.placeHolder = options.placeHolder; inputOptions.prompt = options.prompt; inputOptions.value = options.value; + inputOptions.ignoreFocusLost = options.ignoreFocusOut; } if (validateInput) { diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index 57fe01d9478..3c3e2e74915 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -133,7 +133,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe // open quick pick with just one choice. we will recurse whenever // the validation/success message changes this.doPick(TPromise.as([{ label: currentPick }]), { - ignoreFocusLost: false, + ignoreFocusLost: options.ignoreFocusLost, autoFocus: { autoFocusFirstEntry: true }, password: options.password, placeHolder: options.placeHolder, diff --git a/src/vs/workbench/services/quickopen/common/quickOpenService.ts b/src/vs/workbench/services/quickopen/common/quickOpenService.ts index ae331c0ba90..3043dfa2db3 100644 --- a/src/vs/workbench/services/quickopen/common/quickOpenService.ts +++ b/src/vs/workbench/services/quickopen/common/quickOpenService.ts @@ -46,6 +46,8 @@ export interface IPickOptions { * an optional flag to include the detail when filtering the picks */ matchOnDetail?: boolean; + + ignoreFocusLost?: boolean; } export interface IInputOptions { @@ -70,6 +72,8 @@ export interface IInputOptions { */ password?: boolean; + ignoreFocusLost?: boolean; + /** * an optional function that is used to validate user input. */