mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-14 18:46:34 -05:00
Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973 (#6381)
* Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973 * disable strict null check
This commit is contained in:
@@ -6,14 +6,14 @@
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { Event } from 'vs/base/common/event';
|
||||
import { ITelemetryData } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { IProcessEnvironment, isMacintosh, isLinux } from 'vs/base/common/platform';
|
||||
import { IProcessEnvironment, isMacintosh, isLinux, isWeb } from 'vs/base/common/platform';
|
||||
import { ParsedArgs, IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
|
||||
import { IRecentlyOpened, IRecent } from 'vs/platform/history/common/history';
|
||||
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
||||
import { ExportData } from 'vs/base/common/performance';
|
||||
import { LogLevel } from 'vs/platform/log/common/log';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { DisposableStore, Disposable } from 'vs/base/common/lifecycle';
|
||||
import { URI, UriComponents } from 'vs/base/common/uri';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { CancelablePromise, createCancelablePromise } from 'vs/base/common/async';
|
||||
@@ -153,6 +153,7 @@ export interface IWindowsService {
|
||||
// Global methods
|
||||
openWindow(windowId: number, uris: IURIToOpen[], options: IOpenSettings): Promise<void>;
|
||||
openNewWindow(options?: INewWindowOptions): Promise<void>;
|
||||
openExtensionDevelopmentHostWindow(args: ParsedArgs, env: IProcessEnvironment): Promise<void>;
|
||||
getWindows(): Promise<{ id: number; workspace?: IWorkspaceIdentifier; folderUri?: ISingleFolderWorkspaceIdentifier; title: string; filename?: string; }[]>;
|
||||
getWindowCount(): Promise<number>;
|
||||
log(severity: string, ...messages: string[]): Promise<void>;
|
||||
@@ -205,15 +206,15 @@ export interface IFileToOpen {
|
||||
}
|
||||
|
||||
export function isWorkspaceToOpen(uriToOpen: IURIToOpen): uriToOpen is IWorkspaceToOpen {
|
||||
return !!uriToOpen['workspaceUri'];
|
||||
return !!(uriToOpen as IWorkspaceToOpen)['workspaceUri'];
|
||||
}
|
||||
|
||||
export function isFolderToOpen(uriToOpen: IURIToOpen): uriToOpen is IFolderToOpen {
|
||||
return !!uriToOpen['folderUri'];
|
||||
return !!(uriToOpen as IFolderToOpen)['folderUri'];
|
||||
}
|
||||
|
||||
export function isFileToOpen(uriToOpen: IURIToOpen): uriToOpen is IFileToOpen {
|
||||
return !!uriToOpen['fileUri'];
|
||||
return !!(uriToOpen as IFileToOpen)['fileUri'];
|
||||
}
|
||||
|
||||
|
||||
@@ -238,9 +239,11 @@ export interface IWindowService {
|
||||
closeWorkspace(): Promise<void>;
|
||||
updateTouchBar(items: ISerializableCommandAction[][]): Promise<void>;
|
||||
enterWorkspace(path: URI): Promise<IEnterWorkspaceResult | undefined>;
|
||||
toggleFullScreen(): Promise<void>;
|
||||
toggleFullScreen(target?: HTMLElement): Promise<void>;
|
||||
setRepresentedFilename(fileName: string): Promise<void>;
|
||||
getRecentlyOpened(): Promise<IRecentlyOpened>;
|
||||
addRecentlyOpened(recents: IRecent[]): Promise<void>;
|
||||
removeFromRecentlyOpened(paths: URI[]): Promise<void>;
|
||||
focusWindow(): Promise<void>;
|
||||
closeWindow(): Promise<void>;
|
||||
openWindow(uris: IURIToOpen[], options?: IOpenSettings): Promise<void>;
|
||||
@@ -282,6 +285,10 @@ export interface IWindowSettings {
|
||||
}
|
||||
|
||||
export function getTitleBarStyle(configurationService: IConfigurationService, environment: IEnvironmentService, isExtensionDevelopment = environment.isExtensionDevelopment): 'native' | 'custom' {
|
||||
if (isWeb) {
|
||||
return 'custom';
|
||||
}
|
||||
|
||||
const configuration = configurationService.getValue<IWindowSettings>('window');
|
||||
|
||||
const isDev = !environment.isBuilt || isExtensionDevelopment;
|
||||
@@ -295,7 +302,7 @@ export function getTitleBarStyle(configurationService: IConfigurationService, en
|
||||
return 'native'; // native tabs on sierra do not work with custom title style
|
||||
}
|
||||
|
||||
const useSimpleFullScreen = isMacintosh && configuration.nativeFullScreen === false;
|
||||
const useSimpleFullScreen = false; //isMacintosh && configuration.nativeFullScreen === false;
|
||||
if (useSimpleFullScreen) {
|
||||
return 'native'; // simple fullscreen does not work well with custom title style (https://github.com/Microsoft/vscode/issues/63291)
|
||||
}
|
||||
@@ -412,6 +419,7 @@ export interface IWindowConfiguration extends ParsedArgs {
|
||||
nodeCachedDataDir?: string;
|
||||
|
||||
backupPath?: string;
|
||||
backupWorkspaceResource?: URI;
|
||||
|
||||
workspace?: IWorkspaceIdentifier;
|
||||
folderUri?: ISingleFolderWorkspaceIdentifier;
|
||||
@@ -447,13 +455,15 @@ export interface IRunKeybindingInWindowRequest {
|
||||
userSettingsLabel: string;
|
||||
}
|
||||
|
||||
export class ActiveWindowManager implements IDisposable {
|
||||
export class ActiveWindowManager extends Disposable {
|
||||
|
||||
private disposables: IDisposable[] = [];
|
||||
private readonly disposables = this._register(new DisposableStore());
|
||||
private firstActiveWindowIdPromise: CancelablePromise<number | undefined> | undefined;
|
||||
private activeWindowId: number | undefined;
|
||||
|
||||
constructor(@IWindowsService windowsService: IWindowsService) {
|
||||
super();
|
||||
|
||||
const onActiveWindowChange = Event.latch(Event.any(windowsService.onWindowOpen, windowsService.onWindowFocus));
|
||||
onActiveWindowChange(this.setActiveWindow, this, this.disposables);
|
||||
|
||||
@@ -474,10 +484,7 @@ export class ActiveWindowManager implements IDisposable {
|
||||
|
||||
async getActiveClientId(): Promise<string | undefined> {
|
||||
const id = this.firstActiveWindowIdPromise ? (await this.firstActiveWindowIdPromise) : this.activeWindowId;
|
||||
|
||||
return `window:${id}`;
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.disposables = dispose(this.disposables);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { ParsedArgs } from 'vs/platform/environment/common/environment';
|
||||
import { IMainProcessService } from 'vs/platform/ipc/electron-browser/mainProcessService';
|
||||
import { IProcessEnvironment } from 'vs/base/common/platform';
|
||||
|
||||
export class WindowsService implements IWindowsService {
|
||||
|
||||
@@ -195,6 +196,10 @@ export class WindowsService implements IWindowsService {
|
||||
return this.channel.call('openNewWindow', options);
|
||||
}
|
||||
|
||||
openExtensionDevelopmentHostWindow(args: ParsedArgs, env: IProcessEnvironment): Promise<void> {
|
||||
return this.channel.call('openExtensionDevelopmentHostWindow', [args, env]);
|
||||
}
|
||||
|
||||
async getWindows(): Promise<{ id: number; workspace?: IWorkspaceIdentifier; folderUri?: ISingleFolderWorkspaceIdentifier; title: string; filename?: string; }[]> {
|
||||
const result = await this.channel.call<{
|
||||
id: number;
|
||||
|
||||
@@ -92,7 +92,6 @@ export interface IWindowsMainService {
|
||||
readonly onWindowClose: Event<number>;
|
||||
|
||||
// methods
|
||||
ready(initialUserEnv: IProcessEnvironment): void;
|
||||
reload(win: ICodeWindow, cli?: ParsedArgs): void;
|
||||
enterWorkspace(win: ICodeWindow, path: URI): Promise<IEnterWorkspaceResult | undefined>;
|
||||
closeWorkspace(win: ICodeWindow): void;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import * as nls from 'vs/nls';
|
||||
import * as os from 'os';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
|
||||
import { assign } from 'vs/base/common/objects';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import product from 'vs/platform/product/node/product';
|
||||
@@ -21,14 +21,15 @@ import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier } from 'vs/platf
|
||||
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
import { mnemonicButtonLabel } from 'vs/base/common/labels';
|
||||
import { isMacintosh, isLinux } from 'vs/base/common/platform';
|
||||
import { isMacintosh, isLinux, IProcessEnvironment } from 'vs/base/common/platform';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation';
|
||||
|
||||
export class WindowsService implements IWindowsService, IURLHandler, IDisposable {
|
||||
export class WindowsService extends Disposable implements IWindowsService, IURLHandler {
|
||||
|
||||
_serviceBrand: any;
|
||||
_serviceBrand: ServiceIdentifier<any>;
|
||||
|
||||
private disposables: IDisposable[] = [];
|
||||
private readonly disposables = this._register(new DisposableStore());
|
||||
|
||||
private _activeWindowId: number | undefined;
|
||||
|
||||
@@ -52,6 +53,8 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable
|
||||
@IHistoryMainService private readonly historyService: IHistoryMainService,
|
||||
@ILogService private readonly logService: ILogService
|
||||
) {
|
||||
super();
|
||||
|
||||
urlService.registerHandler(this);
|
||||
|
||||
// remember last active window id
|
||||
@@ -303,6 +306,18 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable
|
||||
this.windowsMainService.openNewWindow(OpenContext.API, options);
|
||||
}
|
||||
|
||||
async openExtensionDevelopmentHostWindow(args: ParsedArgs, env: IProcessEnvironment): Promise<void> {
|
||||
this.logService.trace('windowsService#openExtensionDevelopmentHostWindow ' + JSON.stringify(args));
|
||||
|
||||
if (args.extensionDevelopmentPath) {
|
||||
this.windowsMainService.openExtensionDevelopmentHostWindow(args.extensionDevelopmentPath, {
|
||||
context: OpenContext.API,
|
||||
cli: args,
|
||||
userEnv: Object.keys(env).length > 0 ? env : undefined
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async getWindows(): Promise<{ id: number; workspace?: IWorkspaceIdentifier; folderUri?: ISingleFolderWorkspaceIdentifier; title: string; filename?: string; }[]> {
|
||||
this.logService.trace('windowsService#getWindows');
|
||||
|
||||
@@ -319,14 +334,28 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable
|
||||
}
|
||||
|
||||
async log(severity: string, ...messages: string[]): Promise<void> {
|
||||
console[severity].apply(console, ...messages);
|
||||
let consoleFn = console.log;
|
||||
|
||||
switch (severity) {
|
||||
case 'error':
|
||||
consoleFn = console.error;
|
||||
break;
|
||||
case 'warn':
|
||||
consoleFn = console.warn;
|
||||
break;
|
||||
case 'info':
|
||||
consoleFn = console.info;
|
||||
break;
|
||||
}
|
||||
|
||||
consoleFn(...messages);
|
||||
}
|
||||
|
||||
async showItemInFolder(path: URI): Promise<void> {
|
||||
async showItemInFolder(resource: URI): Promise<void> {
|
||||
this.logService.trace('windowsService#showItemInFolder');
|
||||
|
||||
if (path.scheme === Schemas.file) {
|
||||
shell.showItemInFolder(path.fsPath);
|
||||
if (resource.scheme === Schemas.file) {
|
||||
shell.showItemInFolder(resource.fsPath);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -337,7 +366,8 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable
|
||||
async openExternal(url: string): Promise<boolean> {
|
||||
this.logService.trace('windowsService#openExternal');
|
||||
|
||||
return shell.openExternal(url);
|
||||
shell.openExternal(url);
|
||||
return true;
|
||||
}
|
||||
|
||||
async startCrashReporter(config: Electron.CrashReporterStartOptions): Promise<void> {
|
||||
@@ -403,19 +433,20 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable
|
||||
buttons = [ok, copy];
|
||||
}
|
||||
|
||||
this.windowsMainService.showMessageBox({
|
||||
const result = await this.windowsMainService.showMessageBox({
|
||||
title: product.nameLong,
|
||||
type: 'info',
|
||||
message: product.nameLong,
|
||||
detail: `\n${detail}`,
|
||||
buttons,
|
||||
noLink: true,
|
||||
defaultId: buttons.indexOf(ok)
|
||||
}, this.windowsMainService.getFocusedWindow() || this.windowsMainService.getLastActiveWindow()).then(result => {
|
||||
if (buttons[result.button] === copy) {
|
||||
clipboard.writeText(detail);
|
||||
}
|
||||
});
|
||||
defaultId: buttons.indexOf(ok),
|
||||
cancelId: buttons.indexOf(ok)
|
||||
}, this.windowsMainService.getFocusedWindow() || this.windowsMainService.getLastActiveWindow());
|
||||
|
||||
if (buttons[result.button] === copy) {
|
||||
clipboard.writeText(detail);
|
||||
}
|
||||
}
|
||||
|
||||
async handleURL(uri: URI): Promise<boolean> {
|
||||
@@ -461,8 +492,4 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
this.disposables = dispose(this.disposables);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +102,7 @@ export class WindowsChannel implements IServerChannel {
|
||||
return this.service.openWindow(arg[0], urisToOpen, options);
|
||||
}
|
||||
case 'openNewWindow': return this.service.openNewWindow(arg);
|
||||
case 'openExtensionDevelopmentHostWindow': return this.service.openExtensionDevelopmentHostWindow(arg[0], arg[1]);
|
||||
case 'getWindows': return this.service.getWindows();
|
||||
case 'getWindowCount': return this.service.getWindowCount();
|
||||
case 'relaunch': return this.service.relaunch(arg[0]);
|
||||
|
||||
Reference in New Issue
Block a user