提交 763de796 编写于 作者: M Martin Aeschlimann

[product icons] make preferences edit control to be theme-able. Fixes #96647

上级 3887bc8a
...@@ -43,12 +43,12 @@ const _registry = new Registry(); ...@@ -43,12 +43,12 @@ const _registry = new Registry();
export const iconRegistry: IIconRegistry = _registry; export const iconRegistry: IIconRegistry = _registry;
export function registerIcon(id: string, def: Codicon) { export function registerIcon(id: string, def: Codicon, description?: string) {
return new Codicon(id, def); return new Codicon(id, def);
} }
export class Codicon { export class Codicon {
constructor(public readonly id: string, public readonly definition: Codicon | IconDefinition) { constructor(public readonly id: string, public readonly definition: Codicon | IconDefinition, public description?: string) {
_registry.add(this); _registry.add(this);
} }
public get classNames() { return 'codicon codicon-' + this.id; } public get classNames() { return 'codicon codicon-' + this.id; }
......
...@@ -47,6 +47,7 @@ import { InputBox, MessageType } from 'vs/base/browser/ui/inputbox/inputBox'; ...@@ -47,6 +47,7 @@ import { InputBox, MessageType } from 'vs/base/browser/ui/inputbox/inputBox';
import { Emitter, Event } from 'vs/base/common/event'; import { Emitter, Event } from 'vs/base/common/event';
import { MenuRegistry, MenuId, isIMenuItem } from 'vs/platform/actions/common/actions'; import { MenuRegistry, MenuId, isIMenuItem } from 'vs/platform/actions/common/actions';
import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget'; import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget';
import { preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
const $ = DOM.$; const $ = DOM.$;
...@@ -891,7 +892,7 @@ class ActionsColumn extends Column { ...@@ -891,7 +892,7 @@ class ActionsColumn extends Column {
private createEditAction(keybindingItemEntry: IKeybindingItemEntry): IAction { private createEditAction(keybindingItemEntry: IKeybindingItemEntry): IAction {
const keybinding = this.keybindingsService.lookupKeybinding(KEYBINDINGS_EDITOR_COMMAND_DEFINE); const keybinding = this.keybindingsService.lookupKeybinding(KEYBINDINGS_EDITOR_COMMAND_DEFINE);
return <IAction>{ return <IAction>{
class: 'codicon-edit', class: preferencesEditIcon.classNames,
enabled: true, enabled: true,
id: 'editKeybinding', id: 'editKeybinding',
tooltip: keybinding ? localize('editKeybindingLabelWithKey', "Change Keybinding {0}", `(${keybinding.getLabel()})`) : localize('editKeybindingLabel', "Change Keybinding"), tooltip: keybinding ? localize('editKeybindingLabelWithKey', "Change Keybinding {0}", `(${keybinding.getLabel()})`) : localize('editKeybindingLabel', "Change Keybinding"),
......
...@@ -26,7 +26,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; ...@@ -26,7 +26,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations'; import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations';
import { DefaultSettingsHeaderWidget, EditPreferenceWidget, SettingsGroupTitleWidget, SettingsHeaderWidget } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets'; import { DefaultSettingsHeaderWidget, EditPreferenceWidget, SettingsGroupTitleWidget, SettingsHeaderWidget, preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
import { IFilterResult, IPreferencesEditorModel, IPreferencesService, ISetting, ISettingsEditorModel, ISettingsGroup } from 'vs/workbench/services/preferences/common/preferences'; import { IFilterResult, IPreferencesEditorModel, IPreferencesService, ISetting, ISettingsEditorModel, ISettingsGroup } from 'vs/workbench/services/preferences/common/preferences';
import { DefaultSettingsEditorModel, SettingsEditorModel, WorkspaceConfigurationEditorModel } from 'vs/workbench/services/preferences/common/preferencesModels'; import { DefaultSettingsEditorModel, SettingsEditorModel, WorkspaceConfigurationEditorModel } from 'vs/workbench/services/preferences/common/preferencesModels';
import { IMarkerService, IMarkerData, MarkerSeverity, MarkerTag } from 'vs/platform/markers/common/markers'; import { IMarkerService, IMarkerData, MarkerSeverity, MarkerTag } from 'vs/platform/markers/common/markers';
...@@ -748,7 +748,7 @@ class EditSettingRenderer extends Disposable { ...@@ -748,7 +748,7 @@ class EditSettingRenderer extends Disposable {
const decorations = this.editor.getLineDecorations(line); const decorations = this.editor.getLineDecorations(line);
if (decorations) { if (decorations) {
for (const { options } of decorations) { for (const { options } of decorations) {
if (options.glyphMarginClassName && options.glyphMarginClassName.indexOf(EditPreferenceWidget.GLYPH_MARGIN_CLASS_NAME) === -1) { if (options.glyphMarginClassName && options.glyphMarginClassName.indexOf(preferencesEditIcon.classNames) === -1) {
return false; return false;
} }
} }
......
...@@ -35,6 +35,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/ ...@@ -35,6 +35,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/
import { ISettingsGroup } from 'vs/workbench/services/preferences/common/preferences'; import { ISettingsGroup } from 'vs/workbench/services/preferences/common/preferences';
import { EditorOption } from 'vs/editor/common/config/editorOptions'; import { EditorOption } from 'vs/editor/common/config/editorOptions';
import { isEqual } from 'vs/base/common/resources'; import { isEqual } from 'vs/base/common/resources';
import { registerIcon, Codicon } from 'vs/base/common/codicons';
export class SettingsHeaderWidget extends Widget implements IViewZone { export class SettingsHeaderWidget extends Widget implements IViewZone {
...@@ -736,9 +737,9 @@ export class SearchWidget extends Widget { ...@@ -736,9 +737,9 @@ export class SearchWidget extends Widget {
} }
} }
export class EditPreferenceWidget<T> extends Disposable { export const preferencesEditIcon = registerIcon('preferences-edit', Codicon.edit, localize('preferencesEditIcon', 'Icon for the edit action in preferences.'));
static readonly GLYPH_MARGIN_CLASS_NAME = 'codicon codicon-edit'; export class EditPreferenceWidget<T> extends Disposable {
private _line: number = -1; private _line: number = -1;
private _preferences: T[] = []; private _preferences: T[] = [];
...@@ -775,7 +776,7 @@ export class EditPreferenceWidget<T> extends Disposable { ...@@ -775,7 +776,7 @@ export class EditPreferenceWidget<T> extends Disposable {
this._line = line; this._line = line;
newDecoration.push({ newDecoration.push({
options: { options: {
glyphMarginClassName: EditPreferenceWidget.GLYPH_MARGIN_CLASS_NAME, glyphMarginClassName: preferencesEditIcon.classNames,
glyphMarginHoverMessage: new MarkdownString().appendText(hoverMessage), glyphMarginHoverMessage: new MarkdownString().appendText(hoverMessage),
stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges, stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
}, },
......
...@@ -21,6 +21,7 @@ import { attachButtonStyler, attachInputBoxStyler } from 'vs/platform/theme/comm ...@@ -21,6 +21,7 @@ import { attachButtonStyler, attachInputBoxStyler } from 'vs/platform/theme/comm
import { ICssStyleCollector, IColorTheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { ICssStyleCollector, IColorTheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService';
import { disposableTimeout } from 'vs/base/common/async'; import { disposableTimeout } from 'vs/base/common/async';
import { isUndefinedOrNull } from 'vs/base/common/types'; import { isUndefinedOrNull } from 'vs/base/common/types';
import { preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets';
const $ = DOM.$; 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.")); 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 { ...@@ -367,7 +368,7 @@ export class ListSettingWidget extends Disposable {
private createEditAction(idx: number): IAction { private createEditAction(idx: number): IAction {
return <IAction>{ return <IAction>{
class: 'codicon-edit', class: preferencesEditIcon.classNames,
enabled: true, enabled: true,
id: 'workbench.action.editListItem', id: 'workbench.action.editListItem',
tooltip: this.getLocalizedStrings().editActionTooltip, tooltip: this.getLocalizedStrings().editActionTooltip,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册