diff --git a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts index dd4cddee3a12d0..35ef37de64e868 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts @@ -25,7 +25,6 @@ import { preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/pr import { SelectBox } from 'vs/base/browser/ui/selectBox/selectBox'; import { isIOS } from 'vs/base/common/platform'; import { BrowserFeatures } from 'vs/base/browser/canIUse'; -import { debounce } from 'vs/base/common/decorators'; const $ = DOM.$; export const settingsHeaderForeground = registerColor('settings.headerForeground', { light: '#444444', dark: '#e7e7e7', hc: '#ffffff' }, localize('headerForeground', "The foreground color for a section header or active title.")); @@ -781,12 +780,13 @@ export class ObjectSettingWidget extends AbstractListSettingWidget { changedItem.key = key; - this.updateValueUsingSuggestion(key.data, item.value, newValue => { - if (this.shouldUseSuggestion(item.value, changedItem.value, newValue)) { - onValueChange(newValue); - renderLatestValue(); - } - }); + + const suggestedValue = this.valueSuggester(key.data) ?? item.value; + + if (this.shouldUseSuggestion(item.value, changedItem.value, suggestedValue)) { + onValueChange(suggestedValue); + renderLatestValue(); + } }; const onValueChange = (value: ObjectValue) => { changedItem.value = value; @@ -971,14 +971,9 @@ export class ObjectSettingWidget extends AbstractListSettingWidget void) { - const suggestion = this.valueSuggester(key); - onUpdate(suggestion ?? defaultValue); - } - private shouldUseSuggestion(originalValue: ObjectValue, previousValue: ObjectValue, newValue: ObjectValue): boolean { - if (previousValue === newValue) { + // suggestion is exactly the same + if (newValue.type !== 'enum' && newValue.type === previousValue.type && newValue.data === previousValue.data) { return false; }