mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 04:49:35 +00:00
fix #202876
This commit is contained in:
parent
586b9561d8
commit
c36f459a6c
|
@ -15,6 +15,7 @@ import { AccessibilityStatus } from 'vs/workbench/contrib/accessibility/browser/
|
|||
import { EditorAccessibilityHelpContribution } from 'vs/workbench/contrib/accessibility/browser/editorAccessibilityHelp';
|
||||
import { SaveAccessibilitySignalContribution } from 'vs/workbench/contrib/accessibility/browser/saveAccessibilitySignal';
|
||||
import { CommentsAccessibilityHelpContribution } from 'vs/workbench/contrib/comments/browser/commentsAccessibility';
|
||||
import { DiffEditorActiveAnnouncementContribution } from 'vs/workbench/contrib/accessibility/browser/openDiffEditorAnnouncement';
|
||||
|
||||
registerAccessibilityConfiguration();
|
||||
registerSingleton(IAccessibleViewService, AccessibleViewService, InstantiationType.Delayed);
|
||||
|
@ -30,4 +31,5 @@ workbenchRegistry.registerWorkbenchContribution(InlineCompletionsAccessibleViewC
|
|||
|
||||
registerWorkbenchContribution2(AccessibilityStatus.ID, AccessibilityStatus, WorkbenchPhase.BlockRestore);
|
||||
registerWorkbenchContribution2(SaveAccessibilitySignalContribution.ID, SaveAccessibilitySignalContribution, WorkbenchPhase.AfterRestored);
|
||||
registerWorkbenchContribution2(DiffEditorActiveAnnouncementContribution.ID, DiffEditorActiveAnnouncementContribution, WorkbenchPhase.AfterRestored);
|
||||
registerWorkbenchContribution2(DynamicSpeechAccessibilityConfiguration.ID, DynamicSpeechAccessibilityConfiguration, WorkbenchPhase.AfterRestored);
|
||||
|
|
|
@ -53,7 +53,8 @@ export const enum AccessibilityVerbositySettingId {
|
|||
Hover = 'accessibility.verbosity.hover',
|
||||
Notification = 'accessibility.verbosity.notification',
|
||||
EmptyEditorHint = 'accessibility.verbosity.emptyEditorHint',
|
||||
Comments = 'accessibility.verbosity.comments'
|
||||
Comments = 'accessibility.verbosity.comments',
|
||||
DiffEditorActive = 'accessibility.verbosity.diffEditorActive'
|
||||
}
|
||||
|
||||
export const enum AccessibleViewProviderId {
|
||||
|
@ -170,6 +171,10 @@ const configuration: IConfigurationNode = {
|
|||
description: localize('verbosity.comments', 'Provide information about actions that can be taken in the comment widget or in a file which contains comments.'),
|
||||
...baseVerbosityProperty
|
||||
},
|
||||
[AccessibilityVerbositySettingId.DiffEditorActive]: {
|
||||
description: localize('verbosity.diffEditorActive', 'Indicate when a diff editor becomes the active editor.'),
|
||||
...baseVerbosityProperty
|
||||
},
|
||||
[AccessibilityAlertSettingId.Save]: {
|
||||
'markdownDescription': localize('announcement.save', "Indicates when a file is saved. Also see {0}.", '`#audioCues.save#`'),
|
||||
'enum': ['userGesture', 'always', 'never'],
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { isDiffEditor } from 'vs/editor/browser/editorBrowser';
|
||||
import { localize } from 'vs/nls';
|
||||
import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
|
||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||
import { Event } from 'vs/base/common/event';
|
||||
import { AccessibilityVerbositySettingId } from 'vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
||||
|
||||
export class DiffEditorActiveAnnouncementContribution extends Disposable implements IWorkbenchContribution {
|
||||
|
||||
static readonly ID = 'workbench.contrib.diffEditorActiveAnnouncement';
|
||||
|
||||
private _onDidActiveEditorChangeListener?: IDisposable;
|
||||
|
||||
constructor(
|
||||
@IEditorService private readonly _editorService: IEditorService,
|
||||
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,
|
||||
@IConfigurationService private readonly _configurationService: IConfigurationService
|
||||
) {
|
||||
super();
|
||||
this._register(Event.runAndSubscribe(_accessibilityService.onDidChangeScreenReaderOptimized, () => this._updateListener()));
|
||||
this._register(_configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration(AccessibilityVerbositySettingId.DiffEditorActive)) {
|
||||
this._updateListener();
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private _updateListener(): void {
|
||||
const announcementEnabled = this._configurationService.getValue(AccessibilityVerbositySettingId.DiffEditorActive);
|
||||
const screenReaderOptimized = this._accessibilityService.isScreenReaderOptimized();
|
||||
|
||||
if (!announcementEnabled || !screenReaderOptimized) {
|
||||
this._onDidActiveEditorChangeListener?.dispose();
|
||||
this._onDidActiveEditorChangeListener = undefined;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._onDidActiveEditorChangeListener) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._onDidActiveEditorChangeListener = this._register(this._editorService.onDidActiveEditorChange(() => {
|
||||
if (isDiffEditor(this._editorService.activeTextEditorControl)) {
|
||||
this._accessibilityService.alert(localize('openDiffEditorAnnouncement', "Diff editor"));
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
|
@ -110,11 +110,14 @@ function createScreenReaderHelp(): IDisposable {
|
|||
switchSides = localize('switchSidesNoKb', "Run the command Diff Editor: Switch Side, which is currently not triggerable via keybinding, to toggle between the original and modified editors.");
|
||||
}
|
||||
|
||||
const diffEditorActiveAnnouncement = localize('msg5', "The setting, accessibility.verbosity.diffEditorActive, controls if a diff editor announcement is made when it becomes the active editor.");
|
||||
|
||||
const keys = ['accessibility.signals.diffLineDeleted', 'accessibility.signals.diffLineInserted', 'accessibility.signals.diffLineModified'];
|
||||
const content = [
|
||||
localize('msg1', "You are in a diff editor."),
|
||||
localize('msg2', "View the next ({0}) or previous ({1}) diff in diff review mode, which is optimized for screen readers.", next, previous),
|
||||
switchSides,
|
||||
diffEditorActiveAnnouncement,
|
||||
localize('msg4', "To control which accessibility signals should be played, the following settings can be configured: {0}.", keys.join(', ')),
|
||||
];
|
||||
const commentCommandInfo = getCommentCommandInfo(keybindingService, contextKeyService, codeEditor);
|
||||
|
|
Loading…
Reference in a new issue