提交 7b715524 编写于 作者: S Sandeep Somavarapu

#54483 Forward compatibility

上级 dab93d37
......@@ -34,7 +34,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { mnemonicButtonLabel } from 'vs/base/common/labels';
import { Schemas } from 'vs/base/common/network';
import { normalizeNFC } from 'vs/base/common/normalization';
import URI from 'vs/base/common/uri';
import URI, { UriComponents } from 'vs/base/common/uri';
import { Queue } from 'vs/base/common/async';
import { exists } from 'vs/base/node/pfs';
......@@ -54,6 +54,11 @@ interface IWindowState {
uiState: ISingleWindowState;
}
interface IBackwardCompatibleWindowState extends IWindowState {
folderUri?: UriComponents;
}
interface IWindowsState {
lastActiveWindow?: IWindowState;
lastPluginDevelopmentHostWindow?: IWindowState;
......@@ -144,7 +149,7 @@ export class WindowsManager implements IWindowsMainService {
@IWorkspacesMainService private workspacesMainService: IWorkspacesMainService,
@IInstantiationService private instantiationService: IInstantiationService
) {
this.windowsState = this.stateService.getItem<IWindowsState>(WindowsManager.windowsStateStorageKey) || { openedWindows: [] };
this.windowsState = this.getWindowsState();
if (!Array.isArray(this.windowsState.openedWindows)) {
this.windowsState.openedWindows = [];
}
......@@ -153,6 +158,32 @@ export class WindowsManager implements IWindowsMainService {
this.workspacesManager = new WorkspacesManager(workspacesMainService, backupMainService, environmentService, this);
}
private getWindowsState(): IWindowsState {
const windowsState = this.stateService.getItem<IWindowsState>(WindowsManager.windowsStateStorageKey) || { openedWindows: [] };
if (windowsState.lastActiveWindow) {
windowsState.lastActiveWindow = this.revive(windowsState.lastActiveWindow);
}
if (windowsState.lastPluginDevelopmentHostWindow) {
windowsState.lastPluginDevelopmentHostWindow = this.revive(windowsState.lastPluginDevelopmentHostWindow);
}
if (windowsState.openedWindows) {
windowsState.openedWindows = arrays.coalesce(windowsState.openedWindows.map(windowState => this.revive(windowState)));
}
return windowsState;
}
private revive(windowState: IWindowState): IWindowState {
if ((<IBackwardCompatibleWindowState>windowState).folderUri) {
const uri = URI.revive((<IBackwardCompatibleWindowState>windowState).folderUri);
if (uri.scheme === Schemas.file) {
windowState.folderPath = uri.fsPath;
} else {
return null;
}
}
return windowState;
}
ready(initialUserEnv: IProcessEnvironment): void {
this.initialUserEnv = initialUserEnv;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册