Skip to content

Commit 1c2afc3

Browse files
authored
Simplify setting indicators (microsoft#152091)
Ref microsoft#151787
1 parent 5f696f9 commit 1c2afc3

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,12 +353,12 @@
353353

354354
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-ignored .codicon,
355355
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-default-overridden .codicon {
356-
vertical-align: text-top;
356+
vertical-align: middle;
357357
padding-left: 1px;
358358
}
359359

360360
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-label .codicon {
361-
vertical-align: text-top;
361+
vertical-align: middle;
362362
}
363363

364364
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-overrides a.modified-scope {

src/vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { DisposableStore } from 'vs/base/common/lifecycle';
1111
import { localize } from 'vs/nls';
1212
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1313
import { getIgnoredSettings } from 'vs/platform/userDataSync/common/settingsMerge';
14-
import { getDefaultIgnoredSettings } from 'vs/platform/userDataSync/common/userDataSync';
14+
import { getDefaultIgnoredSettings, IUserDataSyncEnablementService } from 'vs/platform/userDataSync/common/userDataSync';
1515
import { SettingsTreeSettingElement } from 'vs/workbench/contrib/preferences/browser/settingsTreeModels';
1616

1717
const $ = DOM.$;
@@ -22,7 +22,7 @@ export interface ISettingOverrideClickEvent {
2222
}
2323

2424
/**
25-
* Renders the indicators next to a setting, such as Sync Ignored, Also Modified In, etc.
25+
* Renders the indicators next to a setting, such as "Also Modified In".
2626
*/
2727
export class SettingsTreeIndicatorsLabel {
2828
/**
@@ -34,7 +34,9 @@ export class SettingsTreeIndicatorsLabel {
3434
private defaultOverrideIndicatorElement: HTMLElement;
3535
private defaultOverrideIndicatorLabel: SimpleIconLabel;
3636

37-
constructor(container: HTMLElement) {
37+
constructor(
38+
container: HTMLElement,
39+
@IUserDataSyncEnablementService private readonly userDataSyncEnablementService: IUserDataSyncEnablementService) {
3840
this.labelElement = DOM.append(container, $('.misc-label'));
3941
this.labelElement.style.display = 'inline';
4042

@@ -53,7 +55,7 @@ export class SettingsTreeIndicatorsLabel {
5355
private createSyncIgnoredElement(): HTMLElement {
5456
const syncIgnoredElement = $('span.setting-item-ignored');
5557
const syncIgnoredLabel = new SimpleIconLabel(syncIgnoredElement);
56-
syncIgnoredLabel.text = `$(sync-ignored) ${localize('extensionSyncIgnoredLabel', 'Sync: Ignored')}`;
58+
syncIgnoredLabel.text = '$(info) ' + localize('extensionSyncIgnoredLabel', 'Setting not synced');
5759
syncIgnoredLabel.title = localize('syncIgnoredTitle', "Settings sync does not sync this setting");
5860
return syncIgnoredElement;
5961
}
@@ -76,15 +78,16 @@ export class SettingsTreeIndicatorsLabel {
7678
DOM.append(this.labelElement, $('span', undefined, '('));
7779
for (let i = 0; i < elementsToShow.length - 1; i++) {
7880
DOM.append(this.labelElement, elementsToShow[i]);
79-
DOM.append(this.labelElement, $('span.comma', undefined, ', '));
81+
DOM.append(this.labelElement, $('span.comma', undefined, ' '));
8082
}
8183
DOM.append(this.labelElement, elementsToShow[elementsToShow.length - 1]);
8284
DOM.append(this.labelElement, $('span', undefined, ')'));
8385
}
8486
}
8587

8688
updateSyncIgnored(element: SettingsTreeSettingElement, ignoredSettings: string[]) {
87-
this.syncIgnoredElement.style.display = ignoredSettings.includes(element.setting.key) ? 'inline' : 'none';
89+
this.syncIgnoredElement.style.display = this.userDataSyncEnablementService.isEnabled()
90+
&& ignoredSettings.includes(element.setting.key) ? 'inline' : 'none';
8891
this.render();
8992
}
9093

@@ -133,7 +136,7 @@ export class SettingsTreeIndicatorsLabel {
133136
}
134137
if (sourceToDisplay) {
135138
this.defaultOverrideIndicatorLabel.title = localize('defaultOverriddenDetails', "Default setting value overridden by {0}", sourceToDisplay);
136-
this.defaultOverrideIndicatorLabel.text = `$(replace) ${sourceToDisplay}`;
139+
this.defaultOverrideIndicatorLabel.text = '$(info) ' + localize('defaultOverriddenLabel', "Default value changed");
137140
}
138141
}
139142
this.render();
@@ -161,11 +164,14 @@ export function getIndicatorsLabelAriaLabel(element: SettingsTreeSettingElement,
161164
// Add default override indicator text
162165
if (element.defaultValueSource) {
163166
const defaultValueSource = element.defaultValueSource;
167+
let sourceToDisplay = '';
164168
if (typeof defaultValueSource !== 'string' && defaultValueSource.id !== element.setting.extensionInfo?.id) {
165-
const extensionSource = defaultValueSource.displayName ?? defaultValueSource.id;
166-
ariaLabelSections.push(localize('defaultOverriddenDetails', "Default setting value overridden by {0}", extensionSource));
169+
sourceToDisplay = defaultValueSource.displayName ?? defaultValueSource.id;
167170
} else if (typeof defaultValueSource === 'string') {
168-
ariaLabelSections.push(localize('defaultOverriddenDetails', "Default setting value overridden by {0}", defaultValueSource));
171+
sourceToDisplay = defaultValueSource;
172+
}
173+
if (sourceToDisplay) {
174+
ariaLabelSections.push(localize('defaultOverriddenDetails', "Default setting value overridden by {0}", sourceToDisplay));
169175
}
170176
}
171177

src/vs/workbench/contrib/preferences/browser/settingsTree.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -785,7 +785,7 @@ export abstract class AbstractSettingRenderer extends Disposable implements ITre
785785
const categoryElement = DOM.append(labelCategoryContainer, $('span.setting-item-category'));
786786
const labelElementContainer = DOM.append(labelCategoryContainer, $('span.setting-item-label'));
787787
const labelElement = new SimpleIconLabel(labelElementContainer);
788-
const indicatorsLabel = new SettingsTreeIndicatorsLabel(titleElement);
788+
const indicatorsLabel = this._instantiationService.createInstance(SettingsTreeIndicatorsLabel, titleElement);
789789

790790
const descriptionElement = DOM.append(container, $('.setting-item-description'));
791791
const modifiedIndicatorElement = DOM.append(container, $('.setting-item-modified-indicator'));
@@ -1814,7 +1814,7 @@ export class SettingBoolRenderer extends AbstractSettingRenderer implements ITre
18141814
const categoryElement = DOM.append(titleElement, $('span.setting-item-category'));
18151815
const labelElementContainer = DOM.append(titleElement, $('span.setting-item-label'));
18161816
const labelElement = new SimpleIconLabel(labelElementContainer);
1817-
const indicatorsLabel = new SettingsTreeIndicatorsLabel(titleElement);
1817+
const indicatorsLabel = this._instantiationService.createInstance(SettingsTreeIndicatorsLabel, titleElement);
18181818

18191819
const descriptionAndValueElement = DOM.append(container, $('.setting-item-value-description'));
18201820
const controlElement = DOM.append(descriptionAndValueElement, $('.setting-item-bool-control'));

0 commit comments

Comments
 (0)