From 3e211597ffb79b95b57227c80497c610b55062b9 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 19 Feb 2020 10:13:58 +0100 Subject: [PATCH] also support single icon, not just ThemeIcon and {light, dark}-tuples, #77728 --- src/vs/editor/common/modes.ts | 2 +- src/vs/monaco.d.ts | 2 +- src/vs/workbench/api/common/extHost.protocol.ts | 15 +++++++++++++-- .../contrib/bulkEdit/browser/bulkEditTree.ts | 7 +++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 0340900a5c4..b7dfb8adf9b 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -1324,7 +1324,7 @@ export interface WorkspaceEditMetadata { needsConfirmation: boolean; label: string; description?: string; - iconPath?: { id: string } | { light: URI, dark: URI }; + iconPath?: { id: string } | URI | { light: URI, dark: URI }; } export interface WorkspaceFileEditOptions { diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 0216ff21d1d..e45120452e4 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -6044,7 +6044,7 @@ declare namespace monaco.languages { description?: string; iconPath?: { id: string; - } | { + } | Uri | { light: Uri; dark: Uri; }; diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index ee4368dbe33..56f2530c0ed 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -50,6 +50,7 @@ import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtens import { TunnelDto } from 'vs/workbench/api/common/extHostTunnelService'; import { TunnelOptions } from 'vs/platform/remote/common/tunnel'; import { Timeline, TimelineChangeEvent, TimelineCursor, TimelineProviderDescriptor } from 'vs/workbench/contrib/timeline/common/timeline'; +import { revive } from 'vs/base/common/marshalling'; export interface IEnvironment { isExtensionDevelopmentDebug: boolean; @@ -1093,18 +1094,25 @@ export interface IWorkspaceSymbolsDto extends IdObject { symbols: IWorkspaceSymbolDto[]; } +export interface IWorkspaceEditEntryMetadataDto { + needsConfirmation: boolean; + label: string; + description?: string; + iconPath?: { id: string } | UriComponents | { light: UriComponents, dark: UriComponents }; +} + export interface IWorkspaceFileEditDto { oldUri?: UriComponents; newUri?: UriComponents; options?: modes.WorkspaceFileEditOptions - metadata?: modes.WorkspaceEditMetadata; + metadata?: IWorkspaceEditEntryMetadataDto; } export interface IWorkspaceTextEditDto { resource: UriComponents; edit: modes.TextEdit; modelVersionId?: number; - metadata?: modes.WorkspaceEditMetadata; + metadata?: IWorkspaceEditEntryMetadataDto; } export interface IWorkspaceEditDto { @@ -1123,6 +1131,9 @@ export function reviveWorkspaceEditDto(data: IWorkspaceEditDto | undefined): mod (edit).newUri = URI.revive((edit).newUri); (edit).oldUri = URI.revive((edit).oldUri); } + if (edit.metadata && edit.metadata.iconPath) { + edit.metadata = revive(edit.metadata); + } } } return data; diff --git a/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts b/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts index 544fa1027d4..6804221716a 100644 --- a/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts +++ b/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts @@ -25,6 +25,7 @@ import { basename } from 'vs/base/common/resources'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; import { WorkspaceFileEdit } from 'vs/editor/common/modes'; import { compare } from 'vs/base/common/strings'; +import { URI } from 'vs/base/common/uri'; // --- VIEW MODEL @@ -420,6 +421,12 @@ export class CategoryElementRenderer implements ITreeRenderer