From 809d2f63d0ebff5dc5fba17b6b2e0013985f6693 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 6 Jan 2021 12:03:07 -0800 Subject: [PATCH] Added show options to simple browser open command --- extensions/simple-browser/src/extension.ts | 4 ++-- extensions/simple-browser/src/simpleBrowserManager.ts | 8 ++++---- extensions/simple-browser/src/simpleBrowserView.ts | 10 ++++++++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/extensions/simple-browser/src/extension.ts b/extensions/simple-browser/src/extension.ts index ae416ce1f82..bd76ed11ef3 100644 --- a/extensions/simple-browser/src/extension.ts +++ b/extensions/simple-browser/src/extension.ts @@ -31,8 +31,8 @@ export function activate(context: vscode.ExtensionContext) { } })); - context.subscriptions.push(vscode.commands.registerCommand(openApiCommand, (url: vscode.Uri) => { - manager.show(url.toString()); + context.subscriptions.push(vscode.commands.registerCommand(openApiCommand, (url: vscode.Uri, showOptions?: { preserveFocus?: boolean }) => { + manager.show(url.toString(), showOptions); })); context.subscriptions.push(vscode.window.registerExternalUriOpener(['http', 'https'], { diff --git a/extensions/simple-browser/src/simpleBrowserManager.ts b/extensions/simple-browser/src/simpleBrowserManager.ts index 1cf93c43d6b..e699377fa6a 100644 --- a/extensions/simple-browser/src/simpleBrowserManager.ts +++ b/extensions/simple-browser/src/simpleBrowserManager.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { SimpleBrowserView } from './simpleBrowserView'; +import { ShowOptions, SimpleBrowserView } from './simpleBrowserView'; export class SimpleBrowserManager { @@ -19,11 +19,11 @@ export class SimpleBrowserManager { this._activeView = undefined; } - public show(url: string): void { + public show(url: string, options?: ShowOptions): void { if (this._activeView) { - this._activeView.show(url); + this._activeView.show(url, options); } else { - const view = new SimpleBrowserView(this.extensionUri, url); + const view = new SimpleBrowserView(this.extensionUri, url, options); view.onDispose(() => { if (this._activeView === view) { this._activeView = undefined; diff --git a/extensions/simple-browser/src/simpleBrowserView.ts b/extensions/simple-browser/src/simpleBrowserView.ts index cd44e86df9f..12e1fb316f1 100644 --- a/extensions/simple-browser/src/simpleBrowserView.ts +++ b/extensions/simple-browser/src/simpleBrowserView.ts @@ -9,6 +9,10 @@ import { Disposable } from './dispose'; const localize = nls.loadMessageBundle(); +export interface ShowOptions { + readonly preserveFocus?: boolean; +} + export class SimpleBrowserView extends Disposable { public static readonly viewType = 'simpleBrowser.view'; @@ -22,11 +26,13 @@ export class SimpleBrowserView extends Disposable { constructor( private readonly extensionUri: vscode.Uri, url: string, + showOptions?: ShowOptions ) { super(); this._webviewPanel = this._register(vscode.window.createWebviewPanel(SimpleBrowserView.viewType, SimpleBrowserView.title, { viewColumn: vscode.ViewColumn.Active, + preserveFocus: showOptions?.preserveFocus }, { enableScripts: true, retainContextWhenHidden: true, @@ -67,9 +73,9 @@ export class SimpleBrowserView extends Disposable { super.dispose(); } - public show(url: string) { + public show(url: string, options?: ShowOptions) { this._webviewPanel.webview.html = this.getHtml(url); - this._webviewPanel.reveal(); + this._webviewPanel.reveal(undefined, options?.preserveFocus); } private getHtml(url: string) {