Skip to content

Commit 53301ea

Browse files
authored
add context keys for when kb actions are available (microsoft#223555)
fixes microsoft#223329
1 parent ba4c48a commit 53301ea

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ export const accessibleViewOnLastLine = new RawContextKey<boolean>('accessibleVi
2525
export const accessibleViewCurrentProviderId = new RawContextKey<string>('accessibleViewCurrentProviderId', undefined, undefined);
2626
export const accessibleViewInCodeBlock = new RawContextKey<boolean>('accessibleViewInCodeBlock', undefined, undefined);
2727
export const accessibleViewContainsCodeBlocks = new RawContextKey<boolean>('accessibleViewContainsCodeBlocks', undefined, undefined);
28+
export const accessibleViewHasUnassignedKeybindings = new RawContextKey<boolean>('accessibleViewHasUnassignedKeybindings', undefined, undefined);
29+
export const accessibleViewHasAssignedKeybindings = new RawContextKey<boolean>('accessibleViewHasAssignedKeybindings', undefined, undefined);
2830

2931
/**
3032
* Miscellaneous settings tagged with accessibility and implemented in the accessibility contrib but

src/vs/workbench/contrib/accessibility/browser/accessibleView.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import { ILayoutService } from 'vs/platform/layout/browser/layoutService';
4040
import { IOpenerService } from 'vs/platform/opener/common/opener';
4141
import { IQuickInputService, IQuickPick, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
4242
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
43-
import { AccessibilityVerbositySettingId, AccessibilityWorkbenchSettingId, accessibilityHelpIsShown, accessibleViewContainsCodeBlocks, accessibleViewCurrentProviderId, accessibleViewGoToSymbolSupported, accessibleViewInCodeBlock, accessibleViewIsShown, accessibleViewOnLastLine, accessibleViewSupportsNavigation, accessibleViewVerbosityEnabled } from 'vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
43+
import { AccessibilityVerbositySettingId, AccessibilityWorkbenchSettingId, accessibilityHelpIsShown, accessibleViewContainsCodeBlocks, accessibleViewCurrentProviderId, accessibleViewGoToSymbolSupported, accessibleViewHasAssignedKeybindings, accessibleViewHasUnassignedKeybindings, accessibleViewInCodeBlock, accessibleViewIsShown, accessibleViewOnLastLine, accessibleViewSupportsNavigation, accessibleViewVerbosityEnabled } from 'vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
4444
import { resolveContentAndKeybindingItems } from 'vs/workbench/contrib/accessibility/browser/accessibleViewKeybindingResolver';
4545
import { AccessibilityCommandId } from 'vs/workbench/contrib/accessibility/common/accessibilityCommands';
4646
import { IChatCodeBlockContextProviderService } from 'vs/workbench/contrib/chat/browser/chat';
@@ -72,6 +72,9 @@ export class AccessibleView extends Disposable {
7272
private _accessibleViewCurrentProviderId: IContextKey<string>;
7373
private _accessibleViewInCodeBlock: IContextKey<boolean>;
7474
private _accessibleViewContainsCodeBlocks: IContextKey<boolean>;
75+
private _hasUnassignedKeybindings: IContextKey<boolean>;
76+
private _hasAssignedKeybindings: IContextKey<boolean>;
77+
7578
private _codeBlocks?: ICodeBlock[];
7679
private _inQuickPick: boolean = false;
7780

@@ -115,6 +118,8 @@ export class AccessibleView extends Disposable {
115118
this._accessibleViewInCodeBlock = accessibleViewInCodeBlock.bindTo(this._contextKeyService);
116119
this._accessibleViewContainsCodeBlocks = accessibleViewContainsCodeBlocks.bindTo(this._contextKeyService);
117120
this._onLastLine = accessibleViewOnLastLine.bindTo(this._contextKeyService);
121+
this._hasUnassignedKeybindings = accessibleViewHasUnassignedKeybindings.bindTo(this._contextKeyService);
122+
this._hasAssignedKeybindings = accessibleViewHasAssignedKeybindings.bindTo(this._contextKeyService);
118123

119124
this._container = document.createElement('div');
120125
this._container.classList.add('accessible-view');
@@ -191,6 +196,8 @@ export class AccessibleView extends Disposable {
191196
this._accessibleViewVerbosityEnabled.reset();
192197
this._accessibleViewGoToSymbolSupported.reset();
193198
this._accessibleViewCurrentProviderId.reset();
199+
this._hasAssignedKeybindings.reset();
200+
this._hasUnassignedKeybindings.reset();
194201
}
195202

196203
getPosition(id?: AccessibleViewProviderId): Position | undefined {
@@ -503,6 +510,8 @@ export class AccessibleView extends Disposable {
503510
let content = updatedContent ?? provider.provideContent();
504511
if (provider.options.type === AccessibleViewType.View) {
505512
this._currentContent = content;
513+
this._hasUnassignedKeybindings.reset();
514+
this._hasAssignedKeybindings.reset();
506515
return;
507516
}
508517
const readMoreLinkHint = this._readMoreHint(provider);
@@ -516,11 +525,17 @@ export class AccessibleView extends Disposable {
516525
content = resolvedContent.content.value;
517526
if (resolvedContent.configureKeybindingItems) {
518527
provider.options.configureKeybindingItems = resolvedContent.configureKeybindingItems;
528+
this._hasUnassignedKeybindings.set(true);
519529
configureKbHint = this._configureUnassignedKbHint();
530+
} else {
531+
this._hasAssignedKeybindings.reset();
520532
}
521533
if (resolvedContent.configuredKeybindingItems) {
522534
provider.options.configuredKeybindingItems = resolvedContent.configuredKeybindingItems;
535+
this._hasAssignedKeybindings.set(true);
523536
configureAssignedKbHint = this._configureAssignedKbHint();
537+
} else {
538+
this._hasAssignedKeybindings.reset();
524539
}
525540
}
526541
this._currentContent = content + configureKbHint + configureAssignedKbHint;

src/vs/workbench/contrib/accessibility/browser/accessibleViewActions.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { Action2, MenuId, registerAction2 } from 'vs/platform/actions/common/act
1111
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
1212
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
1313
import { AccessibilityCommandId } from 'vs/workbench/contrib/accessibility/common/accessibilityCommands';
14-
import { accessibilityHelpIsShown, accessibleViewContainsCodeBlocks, accessibleViewCurrentProviderId, accessibleViewGoToSymbolSupported, accessibleViewIsShown, accessibleViewSupportsNavigation, accessibleViewVerbosityEnabled } from 'vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
14+
import { accessibilityHelpIsShown, accessibleViewContainsCodeBlocks, accessibleViewCurrentProviderId, accessibleViewGoToSymbolSupported, accessibleViewHasAssignedKeybindings, accessibleViewHasUnassignedKeybindings, accessibleViewIsShown, accessibleViewSupportsNavigation, accessibleViewVerbosityEnabled } from 'vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
1515
import { AccessibleViewProviderId, IAccessibleViewService } from 'vs/platform/accessibility/browser/accessibleView';
1616
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
1717
import { InlineCompletionsController } from 'vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController';
@@ -232,7 +232,7 @@ class AccessibilityHelpConfigureKeybindingsAction extends Action2 {
232232
constructor() {
233233
super({
234234
id: AccessibilityCommandId.AccessibilityHelpConfigureKeybindings,
235-
precondition: ContextKeyExpr.and(accessibilityHelpIsShown),
235+
precondition: ContextKeyExpr.and(accessibilityHelpIsShown, accessibleViewHasUnassignedKeybindings),
236236
icon: Codicon.key,
237237
keybinding: {
238238
primary: KeyMod.Alt | KeyCode.KeyK,
@@ -243,7 +243,7 @@ class AccessibilityHelpConfigureKeybindingsAction extends Action2 {
243243
id: MenuId.AccessibleView,
244244
group: 'navigation',
245245
order: 3,
246-
when: accessibilityHelpIsShown,
246+
when: accessibleViewHasUnassignedKeybindings,
247247
}
248248
],
249249
title: localize('editor.action.accessibilityHelpConfigureUnassignedKeybindings', "Accessibility Help Configure Unassigned Keybindings")
@@ -259,7 +259,7 @@ class AccessibilityHelpConfigureAssignedKeybindingsAction extends Action2 {
259259
constructor() {
260260
super({
261261
id: AccessibilityCommandId.AccessibilityHelpConfigureAssignedKeybindings,
262-
precondition: ContextKeyExpr.and(accessibilityHelpIsShown),
262+
precondition: ContextKeyExpr.and(accessibilityHelpIsShown, accessibleViewHasAssignedKeybindings),
263263
icon: Codicon.key,
264264
keybinding: {
265265
primary: KeyMod.Alt | KeyCode.KeyA,
@@ -270,7 +270,7 @@ class AccessibilityHelpConfigureAssignedKeybindingsAction extends Action2 {
270270
id: MenuId.AccessibleView,
271271
group: 'navigation',
272272
order: 4,
273-
when: accessibilityHelpIsShown,
273+
when: accessibleViewHasAssignedKeybindings,
274274
}
275275
],
276276
title: localize('editor.action.accessibilityHelpConfigureAssignedKeybindings', "Accessibility Help Configure Assigned Keybindings")

0 commit comments

Comments
 (0)