Skip to content

Commit 989f0df

Browse files
authored
Use CSS variables for settingsTree.ts (microsoft#165437)
Ref microsoft#165169
1 parent 0249ba4 commit 989f0df

File tree

2 files changed

+41
-68
lines changed

2 files changed

+41
-68
lines changed

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

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,11 @@
157157
height: 100%;
158158
}
159159

160+
.settings-editor > .settings-body .settings-tree-container .settings-group-title-label,
161+
.settings-editor > .settings-body .settings-tree-container .setting-item-label {
162+
color: var(--vscode-settings-headerForeground);
163+
}
164+
160165
.settings-editor.no-results > .settings-body .settings-toc-container,
161166
.settings-editor.no-results > .settings-body .settings-tree-container {
162167
display: none;
@@ -184,6 +189,19 @@
184189
display: none !important;
185190
}
186191

192+
.settings-editor > .settings-body .settings-tree-container .monaco-list-row.focused .settings-row-inner-container {
193+
background-color: var(--vscode-settings-focusedRowBackground);
194+
}
195+
196+
.settings-editor > .settings-body .settings-tree-container .monaco-list-row:not(.focused) .settings-row-inner-container:hover {
197+
background-color: var(--vscode-settings-rowHoverBackground);
198+
}
199+
200+
.settings-editor > .settings-body .settings-tree-container .monaco-list:focus-within .monaco-list-row.focused .setting-item-contents,
201+
.settings-editor > .settings-body .settings-tree-container .monaco-list:focus-within .monaco-list-row.focused .settings-group-title-label {
202+
outline: 1px solid var(--vscode-settings-focusedRowBorder);
203+
}
204+
187205
.settings-editor.mid-width > .settings-body .settings-tree-container .settings-editor-tree > .monaco-scrollable-element > .shadow.top {
188206
left: 0;
189207
width: calc(100% - 48px);
@@ -237,6 +255,11 @@
237255
display: none;
238256
}
239257

258+
.settings-editor > .settings-body .settings-toc-container .monaco-list-row:not(.selected) {
259+
color: var(--vscode-foreground);
260+
opacity: 0.9;
261+
}
262+
240263
.settings-editor > .settings-body .settings-toc-container .monaco-list-row .monaco-tl-contents {
241264
display: flex;
242265
}
@@ -360,6 +383,13 @@
360383
font-style: italic;
361384
}
362385

386+
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-overrides,
387+
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-ignored {
388+
/* Hack for subpixel antialiasing */
389+
color: var(--vscode-foreground);
390+
opacity: 0.9;
391+
}
392+
363393
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title > .misc-label .setting-item-overrides.with-custom-hover:hover,
364394
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title > .misc-label .setting-item-ignored:hover,
365395
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title > .misc-label .setting-item-default-overridden:hover {
@@ -404,6 +434,7 @@
404434
user-select: text;
405435
-webkit-user-select: text;
406436
display: none;
437+
color: var(--vscode-errorForeground);
407438
}
408439

409440
.settings-editor > .settings-body .settings-tree-container .setting-item-contents.is-deprecated .setting-item-deprecation-message {
@@ -419,10 +450,15 @@
419450
margin-top: -1px;
420451
user-select: text;
421452
-webkit-user-select: text;
453+
color: var(--vscode-foreground);
454+
opacity: 0.9;
422455
}
423456

424457
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-validation-message {
425458
display: none;
459+
background-color: var(--vscode-inputValidation-errorBackground);
460+
color: var(--vscode-inputValidation-errorForeground);
461+
border: solid 1px var(--vscode-inputValidation-errorBorder);
426462
}
427463

428464
.settings-editor > .settings-body .settings-tree-container .setting-item .setting-item-contents.invalid-input .setting-item-validation-message {
@@ -469,6 +505,7 @@
469505
outline: 1px solid -webkit-focus-ring-color;
470506
outline-offset: -1px;
471507
text-decoration: underline;
508+
outline-color: var(--vscode-focusBorder);
472509
}
473510

474511
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-markdown a:hover,
@@ -483,7 +520,6 @@
483520
text-decoration: underline;
484521
}
485522

486-
487523
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-markdown code {
488524
line-height: 15px;
489525
/** For some reason, this is needed, otherwise <code> will take up 20px height */

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

Lines changed: 4 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { ObjectTreeModel } from 'vs/base/browser/ui/tree/objectTreeModel';
1919
import { ITreeFilter, ITreeModel, ITreeNode, ITreeRenderer, TreeFilterResult, TreeVisibility } from 'vs/base/browser/ui/tree/tree';
2020
import { Action, IAction, Separator } from 'vs/base/common/actions';
2121
import * as arrays from 'vs/base/common/arrays';
22-
import { Color, RGBA } from 'vs/base/common/color';
22+
import { Color } from 'vs/base/common/color';
2323
import { onUnexpectedError } from 'vs/base/common/errors';
2424
import { Emitter, Event } from 'vs/base/common/event';
2525
import { KeyCode } from 'vs/base/common/keyCodes';
@@ -35,9 +35,9 @@ import { IContextMenuService, IContextViewService } from 'vs/platform/contextvie
3535
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
3636
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
3737
import { IOpenerService } from 'vs/platform/opener/common/opener';
38-
import { editorBackground, errorForeground, focusBorder, foreground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground } from 'vs/platform/theme/common/colorRegistry';
38+
import { editorBackground, foreground } from 'vs/platform/theme/common/colorRegistry';
3939
import { attachButtonStyler, attachInputBoxStyler, attachSelectBoxStyler, attachStyler } from 'vs/platform/theme/common/styler';
40-
import { ICssStyleCollector, IColorTheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService';
40+
import { IThemeService } from 'vs/platform/theme/common/themeService';
4141
import { getIgnoredSettings } from 'vs/platform/userDataSync/common/settingsMerge';
4242
import { ITOCEntry } from 'vs/workbench/contrib/preferences/browser/settingsLayout';
4343
import { inspectSetting, ISettingsEditorViewState, settingKeyToDisplayFormat, SettingsTreeElement, SettingsTreeGroupChild, SettingsTreeGroupElement, SettingsTreeNewExtensionsElement, SettingsTreeSettingElement } from 'vs/workbench/contrib/preferences/browser/settingsTreeModels';
@@ -59,7 +59,7 @@ import { IWorkbenchConfigurationService } from 'vs/workbench/services/configurat
5959
import { SettingsTarget } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
6060
import { MarkdownRenderer } from 'vs/editor/contrib/markdownRenderer/browser/markdownRenderer';
6161
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
62-
import { focusedRowBackground, focusedRowBorder, rowHoverBackground, settingsHeaderForeground, settingsNumberInputBackground, settingsNumberInputBorder, settingsNumberInputForeground, settingsSelectBackground, settingsSelectBorder, settingsSelectForeground, settingsSelectListBorder, settingsTextInputBackground, settingsTextInputBorder, settingsTextInputForeground } from 'vs/workbench/contrib/preferences/common/settingsEditorColorRegistry';
62+
import { settingsNumberInputBackground, settingsNumberInputBorder, settingsNumberInputForeground, settingsSelectBackground, settingsSelectBorder, settingsSelectForeground, settingsSelectListBorder, settingsTextInputBackground, settingsTextInputBorder, settingsTextInputForeground } from 'vs/workbench/contrib/preferences/common/settingsEditorColorRegistry';
6363
import { getIndicatorsLabelAriaLabel, ISettingOverrideClickEvent, SettingsTreeIndicatorsLabel } from 'vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators';
6464
import { ILanguageService } from 'vs/editor/common/languages/language';
6565
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
@@ -2276,69 +2276,6 @@ export class SettingsTree extends WorkbenchObjectTree<SettingsTreeElement> {
22762276
configurationService,
22772277
);
22782278

2279-
this.disposables.add(registerThemingParticipant((theme: IColorTheme, collector: ICssStyleCollector) => {
2280-
const foregroundColor = theme.getColor(foreground);
2281-
if (foregroundColor) {
2282-
// Links appear inside other elements in markdown. CSS opacity acts like a mask. So we have to dynamically compute the description color to avoid
2283-
// applying an opacity to the link color.
2284-
const fgWithOpacity = new Color(new RGBA(foregroundColor.rgba.r, foregroundColor.rgba.g, foregroundColor.rgba.b, 0.9));
2285-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-description { color: ${fgWithOpacity}; }`);
2286-
collector.addRule(`.settings-editor > .settings-body .settings-toc-container .monaco-list-row:not(.selected) { color: ${fgWithOpacity}; }`);
2287-
2288-
// Hack for subpixel antialiasing
2289-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-overrides,
2290-
.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-title .setting-item-ignored { color: ${fgWithOpacity}; }`);
2291-
}
2292-
2293-
const errorColor = theme.getColor(errorForeground);
2294-
if (errorColor) {
2295-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-deprecation-message { color: ${errorColor}; }`);
2296-
}
2297-
2298-
const invalidInputBackground = theme.getColor(inputValidationErrorBackground);
2299-
if (invalidInputBackground) {
2300-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-validation-message { background-color: ${invalidInputBackground}; }`);
2301-
}
2302-
2303-
const invalidInputForeground = theme.getColor(inputValidationErrorForeground);
2304-
if (invalidInputForeground) {
2305-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-validation-message { color: ${invalidInputForeground}; }`);
2306-
}
2307-
2308-
const invalidInputBorder = theme.getColor(inputValidationErrorBorder);
2309-
if (invalidInputBorder) {
2310-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-validation-message { border-style:solid; border-width: 1px; border-color: ${invalidInputBorder}; }`);
2311-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item.invalid-input .setting-item-control .monaco-inputbox.idle { outline-width: 0; border-style:solid; border-width: 1px; border-color: ${invalidInputBorder}; }`);
2312-
}
2313-
2314-
const focusedRowBackgroundColor = theme.getColor(focusedRowBackground);
2315-
if (focusedRowBackgroundColor) {
2316-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .monaco-list-row.focused .settings-row-inner-container { background-color: ${focusedRowBackgroundColor}; }`);
2317-
}
2318-
2319-
const rowHoverBackgroundColor = theme.getColor(rowHoverBackground);
2320-
if (rowHoverBackgroundColor) {
2321-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .monaco-list-row:not(.focused) .settings-row-inner-container:hover { background-color: ${rowHoverBackgroundColor}; }`);
2322-
}
2323-
2324-
const focusedRowBorderColor = theme.getColor(focusedRowBorder);
2325-
if (focusedRowBorderColor) {
2326-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .monaco-list:focus-within .monaco-list-row.focused .setting-item-contents { outline: 1px solid ${focusedRowBorderColor} }`);
2327-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .monaco-list:focus-within .monaco-list-row.focused .settings-group-title-label { outline: 1px solid ${focusedRowBorderColor} }`);
2328-
}
2329-
2330-
const headerForegroundColor = theme.getColor(settingsHeaderForeground);
2331-
if (headerForegroundColor) {
2332-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .settings-group-title-label { color: ${headerForegroundColor}; }`);
2333-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-label { color: ${headerForegroundColor}; }`);
2334-
}
2335-
2336-
const focusBorderColor = theme.getColor(focusBorder);
2337-
if (focusBorderColor) {
2338-
collector.addRule(`.settings-editor > .settings-body .settings-tree-container .setting-item-contents .setting-item-markdown a:focus { outline-color: ${focusBorderColor} }`);
2339-
}
2340-
}));
2341-
23422279
this.getHTMLElement().classList.add('settings-editor-tree');
23432280

23442281
this.disposables.add(attachStyler(themeService, {

0 commit comments

Comments
 (0)