Merge from vscode 81d7885dc2e9dc617e1522697a2966bc4025a45d (#5949)

* Merge from vscode 81d7885dc2e9dc617e1522697a2966bc4025a45d

* Fix vs unit tests and hygiene issue

* Fix strict null check issue
This commit is contained in:
Chris LaFreniere
2019-06-10 18:27:09 -07:00
committed by GitHub
parent ff38bc8143
commit d15a3fcc98
926 changed files with 19529 additions and 11383 deletions

View File

@@ -5,11 +5,11 @@
import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle';
import { Event, Emitter } from 'vs/base/common/event';
import { EventType, addDisposableListener, addClass, removeClass, isAncestor, getClientArea, position, size } from 'vs/base/browser/dom';
import { EventType, addDisposableListener, addClass, removeClass, isAncestor, getClientArea, position, size, EventHelper } from 'vs/base/browser/dom';
import { onDidChangeFullscreen, isFullscreen, getZoomFactor } from 'vs/base/browser/browser';
import { IBackupFileService } from 'vs/workbench/services/backup/common/backup';
import { Registry } from 'vs/platform/registry/common/platform';
import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform';
import { isWindows, isLinux, isMacintosh, isWeb } from 'vs/base/common/platform';
import { pathsToEditors } from 'vs/workbench/common/editor';
import { SidebarPart } from 'vs/workbench/browser/parts/sidebar/sidebarPart';
import { PanelPart } from 'vs/workbench/browser/parts/panel/panelPart';
@@ -43,7 +43,10 @@ enum Settings {
SIDEBAR_POSITION = 'workbench.sideBar.location',
PANEL_POSITION = 'workbench.panel.defaultLocation',
ZEN_MODE_RESTORE = 'zenMode.restore'
ZEN_MODE_RESTORE = 'zenMode.restore',
// TODO @misolori remove before shipping stable
ICON_EXPLORATION_ENABLED = 'workbench.iconExploration.enabled'
}
enum Storage {
@@ -63,8 +66,17 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
private readonly _onTitleBarVisibilityChange: Emitter<void> = this._register(new Emitter<void>());
get onTitleBarVisibilityChange(): Event<void> { return this._onTitleBarVisibilityChange.event; }
private readonly _onZenMode: Emitter<boolean> = this._register(new Emitter<boolean>());
get onZenModeChange(): Event<boolean> { return this._onZenMode.event; }
private readonly _onZenModeChange: Emitter<boolean> = this._register(new Emitter<boolean>());
get onZenModeChange(): Event<boolean> { return this._onZenModeChange.event; }
private readonly _onFullscreenChange: Emitter<boolean> = this._register(new Emitter<boolean>());
get onFullscreenChange(): Event<boolean> { return this._onFullscreenChange.event; }
private readonly _onCenteredLayoutChange: Emitter<boolean> = this._register(new Emitter<boolean>());
get onCenteredLayoutChange(): Event<boolean> { return this._onCenteredLayoutChange.event; }
private readonly _onPanelPositionChange: Emitter<string> = this._register(new Emitter<string>());
get onPanelPositionChange(): Event<string> { return this._onPanelPositionChange.event; }
private readonly _onLayout = this._register(new Emitter<IDimension>());
get onLayout(): Event<IDimension> { return this._onLayout.event; }
@@ -148,6 +160,11 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
wasSideBarVisible: false,
wasPanelVisible: false,
transitionDisposeables: [] as IDisposable[]
},
// TODO @misolori remove before shipping stable
iconExploration: {
enabled: false
}
};
@@ -206,6 +223,11 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
// Prevent workbench from scrolling #55456
this._register(addDisposableListener(this.container, EventType.SCROLL, () => this.container.scrollTop = 0));
// Prevent native context menus in web #73781
if (isWeb) {
this._register(addDisposableListener(this.container, EventType.CONTEXT_MENU, (e) => EventHelper.stop(e, true)));
}
// Menubar visibility changes
if ((isWindows || isLinux) && getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') {
this._register(this.titleService.onMenubarVisibilityChange(visible => this.onMenubarToggled(visible)));
@@ -242,6 +264,8 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
this._onTitleBarVisibilityChange.fire();
this.layout(); // handle title bar when fullscreen changes
}
this._onFullscreenChange.fire(this.state.fullscreen);
}
private doUpdateLayoutConfiguration(skipLayout?: boolean): void {
@@ -274,6 +298,12 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
// Menubar visibility
const newMenubarVisibility = this.configurationService.getValue<MenuBarVisibility>(Settings.MENUBAR_VISIBLE);
this.setMenubarVisibility(newMenubarVisibility, !!skipLayout);
// TODO @misolori remove before shipping stable
// Icon exploration on setting change
const newIconExplorationEnabled = this.configurationService.getValue<boolean>(Settings.ICON_EXPLORATION_ENABLED);
this.setIconExploration(newIconExplorationEnabled);
}
private setSideBarPosition(position: Position): void {
@@ -386,6 +416,11 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
// Zen mode enablement
this.state.zenMode.restore = this.storageService.getBoolean(Storage.ZEN_MODE_ENABLED, StorageScope.WORKSPACE, false) && this.configurationService.getValue(Settings.ZEN_MODE_RESTORE);
// TODO @misolori remove before shipping stable
// Icon exploration
this.state.iconExploration.enabled = this.configurationService.getValue<boolean>(Settings.ICON_EXPLORATION_ENABLED);
this.setIconExploration(this.state.iconExploration.enabled);
}
private resolveEditorsToOpen(fileService: IFileService): Promise<IResourceEditor[]> | IResourceEditor[] {
@@ -631,7 +666,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
}
// Event
this._onZenMode.fire(this.state.zenMode.active);
this._onZenModeChange.fire(this.state.zenMode.active);
}
private setStatusBarHidden(hidden: boolean, skipLayout?: boolean): void {
@@ -654,6 +689,19 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
}
}
// TODO @misolori remove before shipping stable
private setIconExploration(enabled: boolean): void {
this.state.iconExploration.enabled = enabled;
// Update DOM
if (enabled) {
document.body.dataset.exploration = 'icon-exploration';
} else {
document.body.dataset.exploration = '';
}
}
protected createWorkbenchLayout(instantiationService: IInstantiationService): void {
const titleBar = this.getPart(Parts.TITLEBAR_PART);
const editorPart = this.getPart(Parts.EDITOR_PART);
@@ -828,6 +876,8 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
this.layout();
}
}
this._onCenteredLayoutChange.fire(this.state.editor.centered);
}
resizePart(part: Parts, sizeChange: number): void {
@@ -1069,6 +1119,8 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
} else {
this.workbenchGrid.layout();
}
this._onPanelPositionChange.fire(positionToString(this.state.panel.position));
}
private savePanelDimension(): void {