提交 3e211597 编写于 作者: J Johannes Rieken

also support single icon, not just ThemeIcon and {light, dark}-tuples, #77728

上级 cc4b95f7
...@@ -1324,7 +1324,7 @@ export interface WorkspaceEditMetadata { ...@@ -1324,7 +1324,7 @@ export interface WorkspaceEditMetadata {
needsConfirmation: boolean; needsConfirmation: boolean;
label: string; label: string;
description?: string; description?: string;
iconPath?: { id: string } | { light: URI, dark: URI }; iconPath?: { id: string } | URI | { light: URI, dark: URI };
} }
export interface WorkspaceFileEditOptions { export interface WorkspaceFileEditOptions {
......
...@@ -6044,7 +6044,7 @@ declare namespace monaco.languages { ...@@ -6044,7 +6044,7 @@ declare namespace monaco.languages {
description?: string; description?: string;
iconPath?: { iconPath?: {
id: string; id: string;
} | { } | Uri | {
light: Uri; light: Uri;
dark: Uri; dark: Uri;
}; };
......
...@@ -50,6 +50,7 @@ import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtens ...@@ -50,6 +50,7 @@ import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtens
import { TunnelDto } from 'vs/workbench/api/common/extHostTunnelService'; import { TunnelDto } from 'vs/workbench/api/common/extHostTunnelService';
import { TunnelOptions } from 'vs/platform/remote/common/tunnel'; import { TunnelOptions } from 'vs/platform/remote/common/tunnel';
import { Timeline, TimelineChangeEvent, TimelineCursor, TimelineProviderDescriptor } from 'vs/workbench/contrib/timeline/common/timeline'; import { Timeline, TimelineChangeEvent, TimelineCursor, TimelineProviderDescriptor } from 'vs/workbench/contrib/timeline/common/timeline';
import { revive } from 'vs/base/common/marshalling';
export interface IEnvironment { export interface IEnvironment {
isExtensionDevelopmentDebug: boolean; isExtensionDevelopmentDebug: boolean;
...@@ -1093,18 +1094,25 @@ export interface IWorkspaceSymbolsDto extends IdObject { ...@@ -1093,18 +1094,25 @@ export interface IWorkspaceSymbolsDto extends IdObject {
symbols: IWorkspaceSymbolDto[]; symbols: IWorkspaceSymbolDto[];
} }
export interface IWorkspaceEditEntryMetadataDto {
needsConfirmation: boolean;
label: string;
description?: string;
iconPath?: { id: string } | UriComponents | { light: UriComponents, dark: UriComponents };
}
export interface IWorkspaceFileEditDto { export interface IWorkspaceFileEditDto {
oldUri?: UriComponents; oldUri?: UriComponents;
newUri?: UriComponents; newUri?: UriComponents;
options?: modes.WorkspaceFileEditOptions options?: modes.WorkspaceFileEditOptions
metadata?: modes.WorkspaceEditMetadata; metadata?: IWorkspaceEditEntryMetadataDto;
} }
export interface IWorkspaceTextEditDto { export interface IWorkspaceTextEditDto {
resource: UriComponents; resource: UriComponents;
edit: modes.TextEdit; edit: modes.TextEdit;
modelVersionId?: number; modelVersionId?: number;
metadata?: modes.WorkspaceEditMetadata; metadata?: IWorkspaceEditEntryMetadataDto;
} }
export interface IWorkspaceEditDto { export interface IWorkspaceEditDto {
...@@ -1123,6 +1131,9 @@ export function reviveWorkspaceEditDto(data: IWorkspaceEditDto | undefined): mod ...@@ -1123,6 +1131,9 @@ export function reviveWorkspaceEditDto(data: IWorkspaceEditDto | undefined): mod
(<IWorkspaceFileEditDto>edit).newUri = URI.revive((<IWorkspaceFileEditDto>edit).newUri); (<IWorkspaceFileEditDto>edit).newUri = URI.revive((<IWorkspaceFileEditDto>edit).newUri);
(<IWorkspaceFileEditDto>edit).oldUri = URI.revive((<IWorkspaceFileEditDto>edit).oldUri); (<IWorkspaceFileEditDto>edit).oldUri = URI.revive((<IWorkspaceFileEditDto>edit).oldUri);
} }
if (edit.metadata && edit.metadata.iconPath) {
edit.metadata = revive(edit.metadata);
}
} }
} }
return <modes.WorkspaceEdit>data; return <modes.WorkspaceEdit>data;
......
...@@ -25,6 +25,7 @@ import { basename } from 'vs/base/common/resources'; ...@@ -25,6 +25,7 @@ import { basename } from 'vs/base/common/resources';
import { ThemeIcon } from 'vs/platform/theme/common/themeService'; import { ThemeIcon } from 'vs/platform/theme/common/themeService';
import { WorkspaceFileEdit } from 'vs/editor/common/modes'; import { WorkspaceFileEdit } from 'vs/editor/common/modes';
import { compare } from 'vs/base/common/strings'; import { compare } from 'vs/base/common/strings';
import { URI } from 'vs/base/common/uri';
// --- VIEW MODEL // --- VIEW MODEL
...@@ -420,6 +421,12 @@ export class CategoryElementRenderer implements ITreeRenderer<CategoryElement, F ...@@ -420,6 +421,12 @@ export class CategoryElementRenderer implements ITreeRenderer<CategoryElement, F
const className = ThemeIcon.asClassName(metadata.iconPath); const className = ThemeIcon.asClassName(metadata.iconPath);
template.icon.className = className ? `theme-icon ${className}` : ''; template.icon.className = className ? `theme-icon ${className}` : '';
} else if (URI.isUri(metadata.iconPath)) {
// background-image
template.icon.className = 'uri-icon';
template.icon.style.setProperty('--background-dark', `url("${metadata.iconPath.toString(true)}")`);
template.icon.style.setProperty('--background-light', `url("${metadata.iconPath.toString(true)}")`);
} else if (metadata.iconPath) { } else if (metadata.iconPath) {
// background-image // background-image
template.icon.className = 'uri-icon'; template.icon.className = 'uri-icon';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册