From aaff78b99662e98ee324e42c31e1711f23f9e399 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Mon, 18 Jun 2018 09:59:51 +0200 Subject: [PATCH] fix #52045 (#52160) --- src/vs/code/electron-main/window.ts | 10 +++++----- src/vs/platform/actions/common/actions.ts | 11 +++++++++-- src/vs/platform/windows/common/windows.ts | 6 +++--- src/vs/platform/windows/common/windowsIpc.ts | 6 +++--- .../windows/electron-browser/windowService.ts | 4 ++-- src/vs/platform/windows/electron-main/windows.ts | 4 ++-- .../platform/windows/electron-main/windowsService.ts | 4 ++-- src/vs/workbench/test/workbenchTestServices.ts | 6 +++--- 8 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 9b5e91bd553..b8e03886266 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -23,7 +23,7 @@ import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform'; import { ICodeWindow, IWindowState, WindowMode } from 'vs/platform/windows/electron-main/windows'; import { IWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces'; import { IBackupMainService } from 'vs/platform/backup/common/backup'; -import { ICommandAction } from 'vs/platform/actions/common/actions'; +import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; import { mark, exportEntries } from 'vs/base/common/performance'; import { resolveMarketplaceHeaders } from 'vs/platform/extensionManagement/node/extensionGalleryService'; @@ -916,7 +916,7 @@ export class CodeWindow implements ICodeWindow { } } - public updateTouchBar(groups: ICommandAction[][]): void { + public updateTouchBar(groups: ISerializableCommandAction[][]): void { if (!isMacintosh) { return; // only supported on macOS } @@ -945,7 +945,7 @@ export class CodeWindow implements ICodeWindow { this._win.setTouchBar(new TouchBar({ items: this.touchBarGroups })); } - private createTouchBarGroup(items: ICommandAction[] = []): Electron.TouchBarSegmentedControl { + private createTouchBarGroup(items: ISerializableCommandAction[] = []): Electron.TouchBarSegmentedControl { // Group Segments const segments = this.createTouchBarGroupSegments(items); @@ -963,11 +963,11 @@ export class CodeWindow implements ICodeWindow { return control; } - private createTouchBarGroupSegments(items: ICommandAction[] = []): ITouchBarSegment[] { + private createTouchBarGroupSegments(items: ISerializableCommandAction[] = []): ITouchBarSegment[] { const segments: ITouchBarSegment[] = items.map(item => { let icon: Electron.NativeImage; if (item.iconLocation && item.iconLocation.dark.scheme === 'file') { - icon = nativeImage.createFromPath(item.iconLocation.dark.fsPath); + icon = nativeImage.createFromPath(URI.revive(item.iconLocation.dark).fsPath); if (icon.isEmpty()) { icon = void 0; } diff --git a/src/vs/platform/actions/common/actions.ts b/src/vs/platform/actions/common/actions.ts index ec370222870..c3108de3af2 100644 --- a/src/vs/platform/actions/common/actions.ts +++ b/src/vs/platform/actions/common/actions.ts @@ -13,21 +13,28 @@ import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/commo import { ICommandService } from 'vs/platform/commands/common/commands'; import { IDisposable } from 'vs/base/common/lifecycle'; import { Event } from 'vs/base/common/event'; -import URI from 'vs/base/common/uri'; +import URI, { UriComponents } from 'vs/base/common/uri'; export interface ILocalizedString { value: string; original: string; } -export interface ICommandAction { +export interface IBaseCommandAction { id: string; title: string | ILocalizedString; category?: string | ILocalizedString; +} + +export interface ICommandAction extends IBaseCommandAction { iconLocation?: { dark: URI; light?: URI; }; precondition?: ContextKeyExpr; } +export interface ISerializableCommandAction extends IBaseCommandAction { + iconLocation?: { dark: UriComponents; light?: UriComponents; }; +} + export interface IMenuItem { command: ICommandAction; alt?: ICommandAction; diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index f548718cd75..2b9185c7948 100644 --- a/src/vs/platform/windows/common/windows.ts +++ b/src/vs/platform/windows/common/windows.ts @@ -13,7 +13,7 @@ import { IProcessEnvironment } from 'vs/base/common/platform'; import { ParsedArgs } from 'vs/platform/environment/common/environment'; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { IRecentlyOpened } from 'vs/platform/history/common/history'; -import { ICommandAction } from 'vs/platform/actions/common/actions'; +import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; import { PerformanceEntry } from 'vs/base/common/performance'; import { LogLevel } from 'vs/platform/log/common/log'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; @@ -144,7 +144,7 @@ export interface IWindowsService { toggleWindowTabsBar(): TPromise; // macOS TouchBar - updateTouchBar(windowId: number, items: ICommandAction[][]): TPromise; + updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): TPromise; // Shared process whenSharedProcessReady(): TPromise; @@ -192,7 +192,7 @@ export interface IWindowService { openDevTools(options?: IDevToolsOptions): TPromise; toggleDevTools(): TPromise; closeWorkspace(): TPromise; - updateTouchBar(items: ICommandAction[][]): TPromise; + updateTouchBar(items: ISerializableCommandAction[][]): TPromise; createAndEnterWorkspace(folders?: IWorkspaceFolderCreationData[], path?: string): TPromise; saveAndEnterWorkspace(path: string): TPromise; toggleFullScreen(): TPromise; diff --git a/src/vs/platform/windows/common/windowsIpc.ts b/src/vs/platform/windows/common/windowsIpc.ts index 86b8cf27dfd..fd2b687d40b 100644 --- a/src/vs/platform/windows/common/windowsIpc.ts +++ b/src/vs/platform/windows/common/windowsIpc.ts @@ -11,7 +11,7 @@ import { IChannel, eventToCall, eventFromCall } from 'vs/base/parts/ipc/common/i import { IWindowsService, INativeOpenDialogOptions, IEnterWorkspaceResult, CrashReporterStartOptions, IMessageBoxResult, MessageBoxOptions, SaveDialogOptions, OpenDialogOptions, IDevToolsOptions } from 'vs/platform/windows/common/windows'; import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { IRecentlyOpened } from 'vs/platform/history/common/history'; -import { ICommandAction } from 'vs/platform/actions/common/actions'; +import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; import URI from 'vs/base/common/uri'; import { ParsedArgs } from 'vs/platform/environment/common/environment'; @@ -42,7 +42,7 @@ export interface IWindowsChannel extends IChannel { call(command: 'moveWindowTabToNewWindow', arg: number): TPromise; call(command: 'mergeAllWindowTabs', arg: number): TPromise; call(command: 'toggleWindowTabsBar', arg: number): TPromise; - call(command: 'updateTouchBar', arg: [number, ICommandAction[][]]): TPromise; + call(command: 'updateTouchBar', arg: [number, ISerializableCommandAction[][]]): TPromise; call(command: 'focusWindow', arg: number): TPromise; call(command: 'closeWindow', arg: number): TPromise; call(command: 'isFocused', arg: number): TPromise; @@ -345,7 +345,7 @@ export class WindowsChannelClient implements IWindowsService { return this.channel.call('startCrashReporter', config); } - updateTouchBar(windowId: number, items: ICommandAction[][]): TPromise { + updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): TPromise { return this.channel.call('updateTouchBar', [windowId, items]); } diff --git a/src/vs/platform/windows/electron-browser/windowService.ts b/src/vs/platform/windows/electron-browser/windowService.ts index 785106fbd91..b91a129c5e0 100644 --- a/src/vs/platform/windows/electron-browser/windowService.ts +++ b/src/vs/platform/windows/electron-browser/windowService.ts @@ -9,7 +9,7 @@ import { Event, filterEvent, mapEvent, anyEvent } from 'vs/base/common/event'; import { TPromise } from 'vs/base/common/winjs.base'; import { IWindowService, IWindowsService, INativeOpenDialogOptions, IEnterWorkspaceResult, IMessageBoxResult, IWindowConfiguration, IDevToolsOptions } from 'vs/platform/windows/common/windows'; import { IRecentlyOpened } from 'vs/platform/history/common/history'; -import { ICommandAction } from 'vs/platform/actions/common/actions'; +import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { ParsedArgs } from 'vs/platform/environment/common/environment'; @@ -137,7 +137,7 @@ export class WindowService implements IWindowService { return this.windowsService.showOpenDialog(this.windowId, options); } - updateTouchBar(items: ICommandAction[][]): TPromise { + updateTouchBar(items: ISerializableCommandAction[][]): TPromise { return this.windowsService.updateTouchBar(this.windowId, items); } } diff --git a/src/vs/platform/windows/electron-main/windows.ts b/src/vs/platform/windows/electron-main/windows.ts index ce2eba8895b..320f8387935 100644 --- a/src/vs/platform/windows/electron-main/windows.ts +++ b/src/vs/platform/windows/electron-main/windows.ts @@ -12,7 +12,7 @@ import { Event } from 'vs/base/common/event'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IProcessEnvironment } from 'vs/base/common/platform'; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; -import { ICommandAction } from 'vs/platform/actions/common/actions'; +import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; export interface IWindowState { width?: number; @@ -64,7 +64,7 @@ export interface ICodeWindow { getRepresentedFilename(): string; onWindowTitleDoubleClick(): void; - updateTouchBar(items: ICommandAction[][]): void; + updateTouchBar(items: ISerializableCommandAction[][]): void; setReady(): void; serializeWindowState(): IWindowState; diff --git a/src/vs/platform/windows/electron-main/windowsService.ts b/src/vs/platform/windows/electron-main/windowsService.ts index 2909bc74d36..22ed49851ac 100644 --- a/src/vs/platform/windows/electron-main/windowsService.ts +++ b/src/vs/platform/windows/electron-main/windowsService.ts @@ -20,7 +20,7 @@ import { ILifecycleService } from 'vs/platform/lifecycle/electron-main/lifecycle import { IWindowsMainService, ISharedProcess } from 'vs/platform/windows/electron-main/windows'; import { IHistoryMainService, IRecentlyOpened } from 'vs/platform/history/common/history'; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; -import { ICommandAction } from 'vs/platform/actions/common/actions'; +import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; import { Schemas } from 'vs/base/common/network'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { isWindows } from 'vs/base/common/platform'; @@ -139,7 +139,7 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable return TPromise.as(null); } - updateTouchBar(windowId: number, items: ICommandAction[][]): TPromise { + updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): TPromise { this.logService.trace('windowsService#updateTouchBar', windowId); const codeWindow = this.windowsMainService.getWindowById(windowId); diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index e2dffbee862..9528c03ba6c 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -53,7 +53,7 @@ import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, isSingleFolderW import { IRecentlyOpened } from 'vs/platform/history/common/history'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; import { IPosition, Position as EditorPosition } from 'vs/editor/common/core/position'; -import { ICommandAction, IMenuService, MenuId, IMenu } from 'vs/platform/actions/common/actions'; +import { IMenuService, MenuId, IMenu, ISerializableCommandAction } from 'vs/platform/actions/common/actions'; import { IHashService } from 'vs/workbench/services/hash/common/hashService'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { MockContextKeyService, MockKeybindingService } from 'vs/platform/keybinding/test/common/mockKeybindingService'; @@ -1059,7 +1059,7 @@ export class TestWindowService implements IWindowService { return TPromise.wrap(void 0); } - updateTouchBar(items: ICommandAction[][]): Promise { + updateTouchBar(items: ISerializableCommandAction[][]): Promise { return TPromise.as(void 0); } } @@ -1266,7 +1266,7 @@ export class TestWindowsService implements IWindowsService { return TPromise.as(void 0); } - updateTouchBar(windowId: number, items: ICommandAction[][]): Promise { + updateTouchBar(windowId: number, items: ISerializableCommandAction[][]): Promise { return TPromise.as(void 0); }