From 8ace0045b0e76cb5bd7ddded4bed6bbcd9a4979d Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Mon, 30 Oct 2023 12:56:34 -0700 Subject: [PATCH] Enable TextAreaSyncAddon when in devMode Fixes #197024 --- .../accessibility/browser/textAreaSyncAddon.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/textAreaSyncAddon.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/textAreaSyncAddon.ts index fb5b757d2b8..28929a64036 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/textAreaSyncAddon.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/textAreaSyncAddon.ts @@ -6,10 +6,11 @@ import { Disposable, DisposableStore, MutableDisposable } from 'vs/base/common/lifecycle'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; import { ITerminalCapabilityStore, TerminalCapability } from 'vs/platform/terminal/common/capabilities/capabilities'; -import { ITerminalLogService } from 'vs/platform/terminal/common/terminal'; +import { ITerminalLogService, TerminalSettingId } from 'vs/platform/terminal/common/terminal'; import type { Terminal, ITerminalAddon } from 'xterm'; import { debounce } from 'vs/base/common/decorators'; import { addDisposableListener } from 'vs/base/browser/dom'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; export interface ITextAreaData { content: string; @@ -24,7 +25,7 @@ export class TextAreaSyncAddon extends Disposable implements ITerminalAddon { activate(terminal: Terminal): void { this._terminal = terminal; - if (this._accessibilityService.isScreenReaderOptimized()) { + if (this._shouldBeActive()) { this._registerSyncListeners(); } } @@ -32,11 +33,12 @@ export class TextAreaSyncAddon extends Disposable implements ITerminalAddon { constructor( private readonly _capabilities: ITerminalCapabilityStore, @IAccessibilityService private readonly _accessibilityService: IAccessibilityService, + @IConfigurationService private readonly _configurationService: IConfigurationService, @ITerminalLogService private readonly _logService: ITerminalLogService ) { super(); this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(() => { - if (this._accessibilityService.isScreenReaderOptimized()) { + if (this._shouldBeActive()) { this._syncTextArea(); this._registerSyncListeners(); } else { @@ -46,7 +48,7 @@ export class TextAreaSyncAddon extends Disposable implements ITerminalAddon { } private _registerSyncListeners(): void { - if (this._accessibilityService.isScreenReaderOptimized() && this._terminal?.textarea) { + if (this._shouldBeActive() && this._terminal?.textarea) { this._listeners.value = new DisposableStore(); this._listeners.value.add(this._terminal.onCursorMove(() => this._syncTextArea())); this._listeners.value.add(this._terminal.onData(() => this._syncTextArea())); @@ -54,6 +56,10 @@ export class TextAreaSyncAddon extends Disposable implements ITerminalAddon { } } + private _shouldBeActive(): boolean { + return this._accessibilityService.isScreenReaderOptimized() || this._configurationService.getValue(TerminalSettingId.DevMode); + } + @debounce(50) private _syncTextArea(): void { this._logService.debug('TextAreaSyncAddon#syncTextArea');