diff --git a/src/vs/workbench/contrib/preferences/browser/settingsTree.ts b/src/vs/workbench/contrib/preferences/browser/settingsTree.ts index 29f00e5e308..84496b86710 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsTree.ts @@ -24,7 +24,7 @@ import { Color, RGBA } from 'vs/base/common/color'; import { onUnexpectedError } from 'vs/base/common/errors'; import { Emitter, Event } from 'vs/base/common/event'; import { KeyCode } from 'vs/base/common/keyCodes'; -import { Disposable, DisposableStore, dispose } from 'vs/base/common/lifecycle'; +import { Disposable, DisposableStore, dispose, toDisposable } from 'vs/base/common/lifecycle'; import { isIOS } from 'vs/base/common/platform'; import { escapeRegExpCharacters } from 'vs/base/common/strings'; import { isArray, isDefined, isUndefinedOrNull } from 'vs/base/common/types'; @@ -1126,6 +1126,10 @@ export class SettingArrayRenderer extends AbstractSettingRenderer implements ITr }); template.context = dataElement; + template.elementDisposables.add(toDisposable(() => { + template.listWidget.cancelEdit(); + })); + template.onChange = (v) => { onChange(v); renderArrayValidations(dataElement, template, v, false); @@ -1263,6 +1267,11 @@ export class SettingObjectRenderer extends AbstractSettingObjectRenderer impleme }); template.context = dataElement; + + template.elementDisposables.add(toDisposable(() => { + template.objectDropdownWidget!.cancelEdit(); + })); + template.onChange = (v: Record | undefined) => { onChange(v); renderArrayValidations(dataElement, template, v, false); @@ -1379,6 +1388,9 @@ export class SettingExcludeRenderer extends AbstractSettingRenderer implements I const value = getExcludeDisplayValue(dataElement); template.excludeWidget.setValue(value); template.context = dataElement; + template.elementDisposables.add(toDisposable(() => { + template.excludeWidget.cancelEdit(); + })); } } diff --git a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts index 9e6f37e6c0b..e59bbccf82d 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts @@ -383,7 +383,7 @@ export abstract class AbstractListSettingWidget extend this.renderList(); } - protected cancelEdit(): void { + public cancelEdit(): void { this.model.setEditKey('none'); this.renderList(); }