Skip to content

Commit 627e7e9

Browse files
committed
1 parent 27a1eff commit 627e7e9

6 files changed

Lines changed: 25 additions & 6 deletions

File tree

src/vs/editor/standalone/browser/simpleServices.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,5 +665,9 @@ export class SimpleLayoutService implements ILayoutService {
665665
return this._container;
666666
}
667667

668+
get hasWorkbench(): boolean {
669+
return false;
670+
}
671+
668672
constructor(private _container: HTMLElement) { }
669673
}

src/vs/platform/contextview/browser/contextMenuHandler.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
1616
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
1717
import { IThemeService } from 'vs/platform/theme/common/themeService';
1818
import { IContextMenuDelegate } from 'vs/base/browser/contextmenu';
19-
import { addDisposableListener, EventType, $ } from 'vs/base/browser/dom';
19+
import { addDisposableListener, EventType, $, removeNode } from 'vs/base/browser/dom';
2020
import { attachMenuStyler } from 'vs/platform/theme/common/styler';
2121
import { domEvent } from 'vs/base/browser/event';
22+
import { ILayoutService } from 'vs/platform/layout/browser/layoutService';
2223

2324
export class ContextMenuHandler {
2425
private element: HTMLElement | null;
@@ -28,14 +29,14 @@ export class ContextMenuHandler {
2829
private block: HTMLElement | null;
2930

3031
constructor(
31-
element: HTMLElement | null,
32+
private layoutService: ILayoutService,
3233
private contextViewService: IContextViewService,
3334
private telemetryService: ITelemetryService,
3435
private notificationService: INotificationService,
3536
private keybindingService: IKeybindingService,
3637
private themeService: IThemeService
3738
) {
38-
this.setContainer(element);
39+
this.setContainer(this.layoutService.container);
3940
}
4041

4142
setContainer(container: HTMLElement | null): void {
@@ -75,7 +76,9 @@ export class ContextMenuHandler {
7576
}
7677

7778
// Render invisible div to block mouse interaction in the rest of the UI
78-
this.block = container.appendChild($('.context-view-block'));
79+
if (this.layoutService.hasWorkbench) {
80+
this.block = container.appendChild($('.context-view-block'));
81+
}
7982

8083
const menuDisposables: IDisposable[] = [];
8184

@@ -110,7 +113,7 @@ export class ContextMenuHandler {
110113
}
111114

112115
if (this.block) {
113-
this.block.remove();
116+
removeNode(this.block);
114117
this.block = null;
115118
}
116119

src/vs/platform/contextview/browser/contextMenuService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class ContextMenuService extends Disposable implements IContextMenuServic
3232
) {
3333
super();
3434

35-
this.contextMenuHandler = this._register(new ContextMenuHandler(layoutService.container, contextViewService, telemetryService, notificationService, keybindingService, themeService));
35+
this.contextMenuHandler = this._register(new ContextMenuHandler(layoutService, contextViewService, telemetryService, notificationService, keybindingService, themeService));
3636
}
3737

3838
dispose(): void {

src/vs/platform/layout/browser/layoutService.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,10 @@ export interface ILayoutService {
3232
* event carries the dimensions of the container as part of it.
3333
*/
3434
readonly onLayout: Event<IDimension>;
35+
36+
37+
/**
38+
* Indicates if the layout has a workbench surrounding the editor
39+
*/
40+
readonly hasWorkbench: boolean;
3541
}

src/vs/workbench/browser/workbench.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,8 @@ export class Workbench extends Disposable implements IWorkbenchLayoutService {
483483

484484
get container(): HTMLElement { return this.workbench; }
485485

486+
get hasWorkbench(): boolean { return true; }
487+
486488
private parts: Map<string, Part> = new Map<string, Part>();
487489

488490
private workbenchGrid: Grid<View> | WorkbenchLegacyLayout;

src/vs/workbench/test/workbenchTestServices.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,10 @@ export class TestLayoutService implements IWorkbenchLayoutService {
505505
return false;
506506
}
507507

508+
public get hasWorkbench(): boolean {
509+
return true;
510+
}
511+
508512
public setEditorHidden(_hidden: boolean): Promise<void> { return Promise.resolve(); }
509513

510514
public setSideBarHidden(_hidden: boolean): Promise<void> { return Promise.resolve(); }

0 commit comments

Comments
 (0)