From 8f69bfe9af5482f0231c2f06d0f88a4ce1dfe5da Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 1 Dec 2017 15:57:21 +0100 Subject: [PATCH] parts: do not layout if not visible fixes #39185 --- .../browser/parts/activitybar/activitybarPart.ts | 5 ++++- src/vs/workbench/browser/parts/panel/panelPart.ts | 3 +++ src/vs/workbench/browser/parts/sidebar/sidebarPart.ts | 9 +++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index e703469831b..e684a25292b 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -18,7 +18,7 @@ import { Part } from 'vs/workbench/browser/part'; import { GlobalActivityActionItem, GlobalActivityAction, ViewletActivityAction, ToggleViewletAction } from 'vs/workbench/browser/parts/activitybar/activitybarActions'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { IBadge } from 'vs/workbench/services/activity/common/activity'; -import { IPartService, Position as SideBarPosition } from 'vs/workbench/services/part/common/partService'; +import { IPartService, Parts, Position as SideBarPosition } from 'vs/workbench/services/part/common/partService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; @@ -184,6 +184,9 @@ export class ActivitybarPart extends Part { * Layout title, content and status area in the given dimension. */ public layout(dimension: Dimension): Dimension[] { + if (!this.partService.isVisible(Parts.ACTIVITYBAR_PART)) { + return [dimension]; + } // Pass to super const sizes = super.layout(dimension); diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index 075ae3a1650..d48670c3131 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -213,6 +213,9 @@ export class PanelPart extends CompositePart implements IPanelService { } public layout(dimension: Dimension): Dimension[] { + if (!this.partService.isVisible(Parts.PANEL_PART)) { + return [dimension]; + } if (this.partService.getPanelPosition() === Position.RIGHT) { // Take into account the 1px border when layouting diff --git a/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts b/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts index fd9b149c803..bdb3dae5d54 100644 --- a/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts +++ b/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts @@ -29,6 +29,7 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; import { contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { SIDE_BAR_TITLE_FOREGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND, SIDE_BAR_BORDER } from 'vs/workbench/common/theme'; import { ToggleSidebarVisibilityAction } from 'vs/workbench/browser/actions/toggleSidebarVisibility'; +import { Dimension } from 'vs/base/browser/builder'; export class SidebarPart extends CompositePart { @@ -128,6 +129,14 @@ export class SidebarPart extends CompositePart { return this.hideActiveComposite().then(composite => void 0); } + public layout(dimension: Dimension): Dimension[] { + if (!this.partService.isVisible(Parts.SIDEBAR_PART)) { + return [dimension]; + } + + return super.layout(dimension); + } + protected getTitleAreaContextMenuActions(): IAction[] { const contextMenuActions = super.getTitleAreaContextMenuActions(); if (contextMenuActions.length) { -- GitLab