提交 50dd2dd3 编写于 作者: M Matt Bierner

Add context for when the webview supports find

Use this to disable the webview find command in those cases
上级 d8a3dd44
...@@ -11,7 +11,7 @@ import { URI } from 'vs/base/common/uri'; ...@@ -11,7 +11,7 @@ import { URI } from 'vs/base/common/uri';
import { Disposable, DisposableStore, MutableDisposable } from 'vs/base/common/lifecycle'; import { Disposable, DisposableStore, MutableDisposable } from 'vs/base/common/lifecycle';
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions';
import { IWebviewService, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE, Webview, WebviewContentOptions, WebviewElement, WebviewExtensionDescription, WebviewOptions, WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview'; import { IWebviewService, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_ENABLED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE, Webview, WebviewContentOptions, WebviewElement, WebviewExtensionDescription, WebviewOptions, WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview';
import { ILayoutService } from 'vs/platform/layout/browser/layoutService'; import { ILayoutService } from 'vs/platform/layout/browser/layoutService';
/** /**
...@@ -38,6 +38,7 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv ...@@ -38,6 +38,7 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv
private readonly _scopedContextKeyService = this._register(new MutableDisposable<IContextKeyService>()); private readonly _scopedContextKeyService = this._register(new MutableDisposable<IContextKeyService>());
private _findWidgetVisible: IContextKey<boolean> | undefined; private _findWidgetVisible: IContextKey<boolean> | undefined;
private _findWidgetEnabled: IContextKey<boolean> | undefined;
public constructor( public constructor(
public readonly id: string, public readonly id: string,
...@@ -97,6 +98,10 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv ...@@ -97,6 +98,10 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv
this._findWidgetVisible?.reset(); this._findWidgetVisible?.reset();
this._findWidgetVisible = KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE.bindTo(contextKeyService); this._findWidgetVisible = KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);
this._findWidgetEnabled?.reset();
this._findWidgetEnabled = KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_ENABLED.bindTo(contextKeyService);
this._findWidgetEnabled.set(!!this.options.enableFindWidget);
} }
} }
...@@ -144,6 +149,8 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv ...@@ -144,6 +149,8 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv
webview.initialScrollProgress = this._initialScrollProgress; webview.initialScrollProgress = this._initialScrollProgress;
} }
this._findWidgetEnabled?.set(!!this.options.enableFindWidget);
webview.mountTo(this.container); webview.mountTo(this.container);
// Forward events from inner webview to outer listeners // Forward events from inner webview to outer listeners
......
...@@ -18,6 +18,8 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation' ...@@ -18,6 +18,8 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
*/ */
export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE = new RawContextKey<boolean>('webviewFindWidgetVisible', false); export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE = new RawContextKey<boolean>('webviewFindWidgetVisible', false);
export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED = new RawContextKey<boolean>('webviewFindWidgetFocused', false); export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED = new RawContextKey<boolean>('webviewFindWidgetFocused', false);
export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_ENABLED = new RawContextKey<boolean>('webviewFindWidgetEnabled', false);
export const webviewHasOwnEditFunctionsContextKey = 'webviewHasOwnEditFunctions'; export const webviewHasOwnEditFunctionsContextKey = 'webviewHasOwnEditFunctions';
export const webviewHasOwnEditFunctionsContext = new RawContextKey<boolean>(webviewHasOwnEditFunctionsContextKey, false); export const webviewHasOwnEditFunctionsContext = new RawContextKey<boolean>(webviewHasOwnEditFunctionsContextKey, false);
......
...@@ -10,7 +10,7 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; ...@@ -10,7 +10,7 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { CATEGORIES } from 'vs/workbench/common/actions'; import { CATEGORIES } from 'vs/workbench/common/actions';
import { KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE, Webview } from 'vs/workbench/contrib/webview/browser/webview'; import { KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_ENABLED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE, Webview } from 'vs/workbench/contrib/webview/browser/webview';
import { WebviewEditor } from 'vs/workbench/contrib/webviewPanel/browser/webviewEditor'; import { WebviewEditor } from 'vs/workbench/contrib/webviewPanel/browser/webviewEditor';
import { WebviewInput } from 'vs/workbench/contrib/webviewPanel/browser/webviewEditorInput'; import { WebviewInput } from 'vs/workbench/contrib/webviewPanel/browser/webviewEditorInput';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
...@@ -26,7 +26,7 @@ export class ShowWebViewEditorFindWidgetAction extends Action2 { ...@@ -26,7 +26,7 @@ export class ShowWebViewEditorFindWidgetAction extends Action2 {
id: ShowWebViewEditorFindWidgetAction.ID, id: ShowWebViewEditorFindWidgetAction.ID,
title: ShowWebViewEditorFindWidgetAction.LABEL, title: ShowWebViewEditorFindWidgetAction.LABEL,
keybinding: { keybinding: {
when: webviewActiveContextKeyExpr, when: ContextKeyExpr.and(webviewActiveContextKeyExpr, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_ENABLED),
primary: KeyMod.CtrlCmd | KeyCode.KEY_F, primary: KeyMod.CtrlCmd | KeyCode.KEY_F,
weight: KeybindingWeight.EditorContrib weight: KeybindingWeight.EditorContrib
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册