Skip to content

Commit 9056a33

Browse files
author
Benjamin Pasero
committed
sandbox - lift some desktop specific interfaces to common
1 parent 6509b55 commit 9056a33

6 files changed

Lines changed: 47 additions & 44 deletions

File tree

src/vs/platform/menubar/electron-main/menubar.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ import * as nls from 'vs/nls';
77
import { isMacintosh, language } from 'vs/base/common/platform';
88
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
99
import { app, shell, Menu, MenuItem, BrowserWindow, MenuItemConstructorOptions, WebContents, Event, KeyboardEvent } from 'electron';
10-
import { getTitleBarStyle, IWindowOpenable } from 'vs/platform/windows/common/windows';
11-
import { OpenContext, IRunActionInWindowRequest, IRunKeybindingInWindowRequest } from 'vs/platform/windows/node/window';
10+
import { getTitleBarStyle, IDesktopRunActionInWindowRequest, IDesktopRunKeybindingInWindowRequest, IWindowOpenable } from 'vs/platform/windows/common/windows';
11+
import { OpenContext } from 'vs/platform/windows/node/window';
1212
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1313
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1414
import { IUpdateService, StateType } from 'vs/platform/update/common/update';
1515
import product from 'vs/platform/product/common/product';
1616
import { RunOnceScheduler } from 'vs/base/common/async';
1717
import { ILogService } from 'vs/platform/log/common/log';
18-
import { mnemonicMenuLabel as baseMnemonicLabel } from 'vs/base/common/labels';
18+
import { mnemonicMenuLabel } from 'vs/base/common/labels';
1919
import { IWindowsMainService, IWindowsCountChangedEvent } from 'vs/platform/windows/electron-main/windows';
2020
import { IWorkspacesHistoryMainService } from 'vs/platform/workspaces/electron-main/workspacesHistoryMainService';
2121
import { IMenubarData, IMenubarKeybinding, MenubarMenuItem, isMenubarMenuItemSeparator, isMenubarMenuItemSubmenu, isMenubarMenuItemAction, IMenubarMenu, isMenubarMenuItemUriAction } from 'vs/platform/menubar/common/menubar';
@@ -754,9 +754,11 @@ export class Menubar {
754754
}
755755

756756
if (invocation.type === 'commandId') {
757-
activeWindow.sendWhenReady('vscode:runAction', { id: invocation.commandId, from: 'menu' } as IRunActionInWindowRequest);
757+
const runActionPayload: IDesktopRunActionInWindowRequest = { id: invocation.commandId, from: 'menu' };
758+
activeWindow.sendWhenReady('vscode:runAction', runActionPayload);
758759
} else {
759-
activeWindow.sendWhenReady('vscode:runKeybinding', { userSettingsLabel: invocation.userSettingsLabel } as IRunKeybindingInWindowRequest);
760+
const runKeybindingPayload: IDesktopRunKeybindingInWindowRequest = { userSettingsLabel: invocation.userSettingsLabel };
761+
activeWindow.sendWhenReady('vscode:runKeybinding', runKeybindingPayload);
760762
}
761763
} else {
762764
this.logService.trace('menubar#runActionInRenderer: no active window found', invocation);
@@ -821,7 +823,7 @@ export class Menubar {
821823
}
822824

823825
private mnemonicLabel(label: string): string {
824-
return baseMnemonicLabel(label, !this.currentEnableMenuBarMnemonics);
826+
return mnemonicMenuLabel(label, !this.currentEnableMenuBarMnemonics);
825827
}
826828
}
827829

src/vs/platform/windows/common/windows.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,39 @@ export interface IPathData {
170170
overrideId?: string;
171171
}
172172

173+
export interface IPathsToWaitFor extends IPathsToWaitForData {
174+
paths: IPath[];
175+
waitMarkerFileUri: URI;
176+
}
177+
178+
interface IPathsToWaitForData {
179+
paths: IPathData[];
180+
waitMarkerFileUri: UriComponents;
181+
}
182+
173183
export interface IOpenFileRequest {
174184
filesToOpenOrCreate?: IPathData[];
175185
filesToDiff?: IPathData[];
176186
}
177187

188+
/**
189+
* Additional context for the request on desktop only.
190+
*/
191+
export interface IDesktopOpenFileRequest extends IOpenFileRequest {
192+
termProgram?: string;
193+
filesToWait?: IPathsToWaitForData;
194+
}
195+
196+
export interface IDesktopRunActionInWindowRequest {
197+
id: string;
198+
from: 'menu' | 'touchbar' | 'mouse';
199+
args?: any[];
200+
}
201+
202+
export interface IDesktopRunKeybindingInWindowRequest {
203+
userSettingsLabel: string;
204+
}
205+
178206
export interface IWindowConfiguration {
179207
sessionId: string;
180208

src/vs/platform/windows/electron-main/windowsMainService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import { screen, BrowserWindow, MessageBoxOptions, Display, app, nativeTheme } f
1919
import { ILifecycleMainService, UnloadReason, LifecycleMainService, LifecycleMainPhase } from 'vs/platform/lifecycle/electron-main/lifecycleMainService';
2020
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
2121
import { ILogService } from 'vs/platform/log/common/log';
22-
import { IWindowSettings, IPath, isFileToOpen, isWorkspaceToOpen, isFolderToOpen, IWindowOpenable, IOpenEmptyWindowOptions, IAddFoldersRequest } from 'vs/platform/windows/common/windows';
23-
import { getLastActiveWindow, findBestWindowOrFolderForFile, findWindowOnWorkspace, findWindowOnExtensionDevelopmentPath, findWindowOnWorkspaceOrFolderUri, INativeWindowConfiguration, OpenContext, IPathsToWaitFor } from 'vs/platform/windows/node/window';
22+
import { IWindowSettings, IPath, isFileToOpen, isWorkspaceToOpen, isFolderToOpen, IWindowOpenable, IOpenEmptyWindowOptions, IAddFoldersRequest, IPathsToWaitFor } from 'vs/platform/windows/common/windows';
23+
import { getLastActiveWindow, findBestWindowOrFolderForFile, findWindowOnWorkspace, findWindowOnExtensionDevelopmentPath, findWindowOnWorkspaceOrFolderUri, INativeWindowConfiguration, OpenContext } from 'vs/platform/windows/node/window';
2424
import { Emitter } from 'vs/base/common/event';
2525
import product from 'vs/platform/product/common/product';
2626
import { IWindowsMainService, IOpenConfiguration, IWindowsCountChangedEvent, ICodeWindow, IWindowState as ISingleWindowState, WindowMode, IOpenEmptyConfiguration } from 'vs/platform/windows/electron-main/windows';

src/vs/platform/windows/node/window.ts

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { IWindowConfiguration, IPath, IOpenFileRequest, IPathData } from 'vs/platform/windows/common/windows';
7-
import { URI, UriComponents } from 'vs/base/common/uri';
6+
import { IWindowConfiguration, IPathsToWaitFor } from 'vs/platform/windows/common/windows';
7+
import { URI } from 'vs/base/common/uri';
88
import * as platform from 'vs/base/common/platform';
99
import * as extpath from 'vs/base/common/extpath';
1010
import { IWorkspaceIdentifier, IResolvedWorkspace, ISingleFolderWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier, isWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
@@ -34,16 +34,6 @@ export const enum OpenContext {
3434
API
3535
}
3636

37-
export interface IRunActionInWindowRequest {
38-
id: string;
39-
from: 'menu' | 'touchbar' | 'mouse';
40-
args?: any[];
41-
}
42-
43-
export interface IRunKeybindingInWindowRequest {
44-
userSettingsLabel: string;
45-
}
46-
4737
export interface INativeWindowConfiguration extends IWindowConfiguration, ParsedArgs {
4838
mainPid: number;
4939

@@ -72,21 +62,6 @@ export interface INativeWindowConfiguration extends IWindowConfiguration, Parsed
7262
filesToWait?: IPathsToWaitFor;
7363
}
7464

75-
export interface INativeOpenFileRequest extends IOpenFileRequest {
76-
termProgram?: string;
77-
filesToWait?: IPathsToWaitForData;
78-
}
79-
80-
export interface IPathsToWaitFor extends IPathsToWaitForData {
81-
paths: IPath[];
82-
waitMarkerFileUri: URI;
83-
}
84-
85-
export interface IPathsToWaitForData {
86-
paths: IPathData[];
87-
waitMarkerFileUri: UriComponents;
88-
}
89-
9065
export interface IWindowContext {
9166
openedWorkspace?: IWorkspaceIdentifier;
9267
openedFolderUri?: URI;

src/vs/workbench/contrib/terminal/electron-browser/terminalNativeContribution.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { ipcRenderer } from 'vs/base/parts/sandbox/electron-sandbox/globals';
7-
import { IOpenFileRequest } from 'vs/platform/windows/common/windows';
7+
import { IDesktopOpenFileRequest } from 'vs/platform/windows/common/windows';
88
import { URI } from 'vs/base/common/uri';
99
import { IFileService } from 'vs/platform/files/common/files';
1010
import { getWindowsBuildNumber, linuxDistro } from 'vs/workbench/contrib/terminal/node/terminal';
@@ -15,7 +15,6 @@ import { registerRemoteContributions } from 'vs/workbench/contrib/terminal/elect
1515
import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService';
1616
import { IElectronService } from 'vs/platform/electron/electron-sandbox/electron';
1717
import { Disposable } from 'vs/base/common/lifecycle';
18-
import { INativeOpenFileRequest } from 'vs/platform/windows/node/window';
1918
import { ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal';
2019
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
2120

@@ -31,7 +30,7 @@ export class TerminalNativeContribution extends Disposable implements IWorkbench
3130
) {
3231
super();
3332

34-
ipcRenderer.on('vscode:openFiles', (_: unknown, request: IOpenFileRequest) => this._onOpenFileRequest(request));
33+
ipcRenderer.on('vscode:openFiles', (_: unknown, request: IDesktopOpenFileRequest) => this._onOpenFileRequest(request));
3534
this._register(electronService.onOSResume(() => this._onOsResume()));
3635

3736
this._terminalService.setLinuxDistro(linuxDistro);
@@ -54,7 +53,7 @@ export class TerminalNativeContribution extends Disposable implements IWorkbench
5453
activeTab.terminalInstances.forEach(instance => instance.forceRedraw());
5554
}
5655

57-
private async _onOpenFileRequest(request: INativeOpenFileRequest): Promise<void> {
56+
private async _onOpenFileRequest(request: IDesktopOpenFileRequest): Promise<void> {
5857
// if the request to open files is coming in from the integrated terminal (identified though
5958
// the termProgram variable) and we are instructed to wait for editors close, wait for the
6059
// marker file to get deleted and then focus back to the integrated terminal.

src/vs/workbench/electron-browser/window.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ import { IFileService } from 'vs/platform/files/common/files';
1313
import { toResource, IUntitledTextResourceEditorInput, SideBySideEditor, pathsToEditors } from 'vs/workbench/common/editor';
1414
import { IEditorService, IResourceEditorInputType } from 'vs/workbench/services/editor/common/editorService';
1515
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
16-
import { IWindowSettings, IOpenFileRequest, IWindowsConfiguration, getTitleBarStyle, IAddFoldersRequest } from 'vs/platform/windows/common/windows';
17-
import { IRunActionInWindowRequest, IRunKeybindingInWindowRequest, INativeOpenFileRequest } from 'vs/platform/windows/node/window';
16+
import { IWindowSettings, IOpenFileRequest, IWindowsConfiguration, getTitleBarStyle, IAddFoldersRequest, IDesktopRunActionInWindowRequest, IDesktopRunKeybindingInWindowRequest, IDesktopOpenFileRequest } from 'vs/platform/windows/common/windows';
1817
import { ITitleService } from 'vs/workbench/services/title/common/titleService';
1918
import { IWorkbenchThemeService, VS_HC_THEME } from 'vs/workbench/services/themes/common/workbenchThemeService';
2019
import { applyZoom } from 'vs/platform/windows/electron-sandbox/window';
@@ -129,7 +128,7 @@ export class NativeWindow extends Disposable {
129128
});
130129

131130
// Support runAction event
132-
ipcRenderer.on('vscode:runAction', async (event: unknown, request: IRunActionInWindowRequest) => {
131+
ipcRenderer.on('vscode:runAction', async (event: unknown, request: IDesktopRunActionInWindowRequest) => {
133132
const args: unknown[] = request.args || [];
134133

135134
// If we run an action from the touchbar, we fill in the currently active resource
@@ -160,7 +159,7 @@ export class NativeWindow extends Disposable {
160159
});
161160

162161
// Support runKeybinding event
163-
ipcRenderer.on('vscode:runKeybinding', (event: unknown, request: IRunKeybindingInWindowRequest) => {
162+
ipcRenderer.on('vscode:runKeybinding', (event: unknown, request: IDesktopRunKeybindingInWindowRequest) => {
164163
if (document.activeElement) {
165164
this.keybindingService.dispatchByUserSettingsLabel(request.userSettingsLabel, document.activeElement);
166165
}
@@ -554,7 +553,7 @@ export class NativeWindow extends Disposable {
554553
this.workspaceEditingService.addFolders(foldersToAdd);
555554
}
556555

557-
private async onOpenFiles(request: INativeOpenFileRequest): Promise<void> {
556+
private async onOpenFiles(request: IDesktopOpenFileRequest): Promise<void> {
558557
const inputs: IResourceEditorInputType[] = [];
559558
const diffMode = !!(request.filesToDiff && (request.filesToDiff.length === 2));
560559

0 commit comments

Comments
 (0)