Skip to content

Commit 763de79

Browse files
committed
[product icons] make preferences edit control to be theme-able. Fixes microsoft#96647
1 parent 3887bc8 commit 763de79

5 files changed

Lines changed: 12 additions & 9 deletions

File tree

src/vs/base/common/codicons.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ const _registry = new Registry();
4343

4444
export const iconRegistry: IIconRegistry = _registry;
4545

46-
export function registerIcon(id: string, def: Codicon) {
46+
export function registerIcon(id: string, def: Codicon, description?: string) {
4747
return new Codicon(id, def);
4848
}
4949

5050
export class Codicon {
51-
constructor(public readonly id: string, public readonly definition: Codicon | IconDefinition) {
51+
constructor(public readonly id: string, public readonly definition: Codicon | IconDefinition, public description?: string) {
5252
_registry.add(this);
5353
}
5454
public get classNames() { return 'codicon codicon-' + this.id; }

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import { InputBox, MessageType } from 'vs/base/browser/ui/inputbox/inputBox';
4747
import { Emitter, Event } from 'vs/base/common/event';
4848
import { MenuRegistry, MenuId, isIMenuItem } from 'vs/platform/actions/common/actions';
4949
import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget';
50+
import { preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
5051

5152
const $ = DOM.$;
5253

@@ -891,7 +892,7 @@ class ActionsColumn extends Column {
891892
private createEditAction(keybindingItemEntry: IKeybindingItemEntry): IAction {
892893
const keybinding = this.keybindingsService.lookupKeybinding(KEYBINDINGS_EDITOR_COMMAND_DEFINE);
893894
return <IAction>{
894-
class: 'codicon-edit',
895+
class: preferencesEditIcon.classNames,
895896
enabled: true,
896897
id: 'editKeybinding',
897898
tooltip: keybinding ? localize('editKeybindingLabelWithKey', "Change Keybinding {0}", `(${keybinding.getLabel()})`) : localize('editKeybindingLabel', "Change Keybinding"),

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
2626
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
2727
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
2828
import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations';
29-
import { DefaultSettingsHeaderWidget, EditPreferenceWidget, SettingsGroupTitleWidget, SettingsHeaderWidget } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
29+
import { DefaultSettingsHeaderWidget, EditPreferenceWidget, SettingsGroupTitleWidget, SettingsHeaderWidget, preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
3030
import { IFilterResult, IPreferencesEditorModel, IPreferencesService, ISetting, ISettingsEditorModel, ISettingsGroup } from 'vs/workbench/services/preferences/common/preferences';
3131
import { DefaultSettingsEditorModel, SettingsEditorModel, WorkspaceConfigurationEditorModel } from 'vs/workbench/services/preferences/common/preferencesModels';
3232
import { IMarkerService, IMarkerData, MarkerSeverity, MarkerTag } from 'vs/platform/markers/common/markers';
@@ -748,7 +748,7 @@ class EditSettingRenderer extends Disposable {
748748
const decorations = this.editor.getLineDecorations(line);
749749
if (decorations) {
750750
for (const { options } of decorations) {
751-
if (options.glyphMarginClassName && options.glyphMarginClassName.indexOf(EditPreferenceWidget.GLYPH_MARGIN_CLASS_NAME) === -1) {
751+
if (options.glyphMarginClassName && options.glyphMarginClassName.indexOf(preferencesEditIcon.classNames) === -1) {
752752
return false;
753753
}
754754
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/
3535
import { ISettingsGroup } from 'vs/workbench/services/preferences/common/preferences';
3636
import { EditorOption } from 'vs/editor/common/config/editorOptions';
3737
import { isEqual } from 'vs/base/common/resources';
38+
import { registerIcon, Codicon } from 'vs/base/common/codicons';
3839

3940
export class SettingsHeaderWidget extends Widget implements IViewZone {
4041

@@ -736,9 +737,9 @@ export class SearchWidget extends Widget {
736737
}
737738
}
738739

739-
export class EditPreferenceWidget<T> extends Disposable {
740+
export const preferencesEditIcon = registerIcon('preferences-edit', Codicon.edit, localize('preferencesEditIcon', 'Icon for the edit action in preferences.'));
740741

741-
static readonly GLYPH_MARGIN_CLASS_NAME = 'codicon codicon-edit';
742+
export class EditPreferenceWidget<T> extends Disposable {
742743

743744
private _line: number = -1;
744745
private _preferences: T[] = [];
@@ -775,7 +776,7 @@ export class EditPreferenceWidget<T> extends Disposable {
775776
this._line = line;
776777
newDecoration.push({
777778
options: {
778-
glyphMarginClassName: EditPreferenceWidget.GLYPH_MARGIN_CLASS_NAME,
779+
glyphMarginClassName: preferencesEditIcon.classNames,
779780
glyphMarginHoverMessage: new MarkdownString().appendText(hoverMessage),
780781
stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
781782
},

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { attachButtonStyler, attachInputBoxStyler } from 'vs/platform/theme/comm
2121
import { ICssStyleCollector, IColorTheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService';
2222
import { disposableTimeout } from 'vs/base/common/async';
2323
import { isUndefinedOrNull } from 'vs/base/common/types';
24+
import { preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
2425

2526
const $ = DOM.$;
2627
export const settingsHeaderForeground = registerColor('settings.headerForeground', { light: '#444444', dark: '#e7e7e7', hc: '#ffffff' }, localize('headerForeground', "The foreground color for a section header or active title."));
@@ -367,7 +368,7 @@ export class ListSettingWidget extends Disposable {
367368

368369
private createEditAction(idx: number): IAction {
369370
return <IAction>{
370-
class: 'codicon-edit',
371+
class: preferencesEditIcon.classNames,
371372
enabled: true,
372373
id: 'workbench.action.editListItem',
373374
tooltip: this.getLocalizedStrings().editActionTooltip,

0 commit comments

Comments
 (0)