mirror of
https://github.com/Microsoft/vscode
synced 2024-10-02 17:32:41 +00:00
fix #187596
This commit is contained in:
parent
dd2273a094
commit
343270e7bb
|
@ -109,8 +109,7 @@ class EditorAccessibilityHelpContribution extends Disposable {
|
|||
await commandService.executeCommand(NEW_UNTITLED_FILE_COMMAND_ID);
|
||||
codeEditor = codeEditorService.getActiveCodeEditor()!;
|
||||
}
|
||||
accessibleViewService.registerProvider(instantiationService.createInstance(AccessibilityHelpProvider, codeEditor));
|
||||
accessibleViewService.show('editor');
|
||||
accessibleViewService.show(instantiationService.createInstance(AccessibilityHelpProvider, codeEditor));
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
@ -136,18 +135,16 @@ class HoverAccessibleViewContribution extends Disposable {
|
|||
if (!controller || !content) {
|
||||
return false;
|
||||
}
|
||||
const provider = accessibleViewService.registerProvider({
|
||||
accessibleViewService.show({
|
||||
id: 'hover',
|
||||
provideContent() { return content; },
|
||||
onClose() {
|
||||
provider.dispose();
|
||||
controller.focus();
|
||||
},
|
||||
options: {
|
||||
ariaLabel: localize('hoverAccessibleView', "Hover Accessible View"), language: 'typescript', type: AccessibleViewType.View
|
||||
}
|
||||
});
|
||||
accessibleViewService.show('hover');
|
||||
return true;
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||
import { KeyCode } from 'vs/base/common/keyCodes';
|
||||
import { Disposable, DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IEditorConstructionOptions } from 'vs/editor/browser/config/editorConfiguration';
|
||||
import { EditorExtensionsRegistry } from 'vs/editor/browser/editorExtensions';
|
||||
|
@ -39,8 +39,7 @@ export const IAccessibleViewService = createDecorator<IAccessibleViewService>('a
|
|||
|
||||
export interface IAccessibleViewService {
|
||||
readonly _serviceBrand: undefined;
|
||||
show(providerId: string): AccessibleView;
|
||||
registerProvider(provider: IAccessibleContentProvider): IDisposable;
|
||||
show(provider: IAccessibleContentProvider): void;
|
||||
}
|
||||
|
||||
export const enum AccessibleViewType {
|
||||
|
@ -175,9 +174,6 @@ class AccessibleView extends Disposable {
|
|||
|
||||
export class AccessibleViewService extends Disposable implements IAccessibleViewService {
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
private _providers: Map<string, IAccessibleContentProvider> = new Map();
|
||||
|
||||
private _accessibleView: AccessibleView | undefined;
|
||||
|
||||
constructor(
|
||||
|
@ -186,22 +182,10 @@ export class AccessibleViewService extends Disposable implements IAccessibleView
|
|||
super();
|
||||
}
|
||||
|
||||
registerProvider(provider: IAccessibleContentProvider): IDisposable {
|
||||
this._providers.set(provider.id, provider);
|
||||
return toDisposable(() => {
|
||||
this._providers.delete(provider.id);
|
||||
});
|
||||
}
|
||||
|
||||
show(providerId: string): AccessibleView {
|
||||
show(provider: IAccessibleContentProvider): void {
|
||||
if (!this._accessibleView) {
|
||||
this._accessibleView = this._register(this._instantiationService.createInstance(AccessibleView));
|
||||
}
|
||||
const provider = this._providers.get(providerId);
|
||||
if (!provider) {
|
||||
throw new Error(`No accessible view provider with id: ${providerId}`);
|
||||
}
|
||||
this._accessibleView.show(provider);
|
||||
return this._accessibleView;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ export async function runAccessibilityHelpAction(accessor: ServicesAccessor, edi
|
|||
const cachedPosition = inputEditor.getPosition();
|
||||
inputEditor.getSupportedActions();
|
||||
const helpText = getAccessibilityHelpText(accessor, type);
|
||||
const provider = accessibleViewService.registerProvider({
|
||||
accessibleViewService.show({
|
||||
id: type,
|
||||
provideContent: () => helpText,
|
||||
onClose: () => {
|
||||
|
@ -81,9 +81,7 @@ export async function runAccessibilityHelpAction(accessor: ServicesAccessor, edi
|
|||
} else if (type === 'inlineChat') {
|
||||
InlineChatController.get(editor)?.focus();
|
||||
}
|
||||
provider.dispose();
|
||||
},
|
||||
options: { type: AccessibleViewType.HelpMenu, ariaLabel: type === 'panelChat' ? localize('chat-help-label', "Chat accessibility help") : localize('inline-chat-label', "Inline chat accessibility help") }
|
||||
});
|
||||
accessibleViewService.show(type);
|
||||
}
|
||||
|
|
|
@ -135,16 +135,14 @@ class ChatAccessibleViewContribution extends Disposable {
|
|||
if (!responseContent) {
|
||||
return false;
|
||||
}
|
||||
const provider = accessibleViewService.registerProvider({
|
||||
accessibleViewService.show({
|
||||
id: 'panelChat',
|
||||
provideContent(): string { return responseContent; },
|
||||
onClose() {
|
||||
widget.focus(focusedItem);
|
||||
provider.dispose();
|
||||
},
|
||||
options: { ariaLabel: nls.localize('chatAccessibleView', "Chat Accessible View"), language: 'typescript', type: AccessibleViewType.View }
|
||||
});
|
||||
accessibleViewService.show('panelChat');
|
||||
return true;
|
||||
}, CONTEXT_IN_CHAT_SESSION));
|
||||
}
|
||||
|
|
|
@ -45,14 +45,12 @@ function descriptionForCommand(commandId: string, msg: string, noKbMsg: string,
|
|||
export async function runAccessibilityHelpAction(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {
|
||||
const accessibleViewService = accessor.get(IAccessibleViewService);
|
||||
const helpText = getAccessibilityHelpText(accessor);
|
||||
const provider = accessibleViewService.registerProvider({
|
||||
accessibleViewService.show({
|
||||
id: 'notebook',
|
||||
provideContent: () => helpText,
|
||||
onClose: () => {
|
||||
editor.focus();
|
||||
provider.dispose();
|
||||
},
|
||||
options: { type: AccessibleViewType.HelpMenu, ariaLabel: 'Notebook accessibility help' }
|
||||
});
|
||||
accessibleViewService.show('notebook');
|
||||
}
|
||||
|
|
|
@ -73,8 +73,7 @@ export class TerminalAccessibilityHelpContribution extends Disposable {
|
|||
if (!terminal) {
|
||||
return;
|
||||
}
|
||||
accessibleViewService.registerProvider(instantiationService.createInstance(TerminalAccessibleContentProvider, instance, terminal));
|
||||
accessibleViewService.show('terminal');
|
||||
accessibleViewService.show(instantiationService.createInstance(TerminalAccessibleContentProvider, instance, terminal));
|
||||
}, TerminalContextKeys.focus));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue