Skip to content

Commit f154742

Browse files
committed
1 parent e85dccf commit f154742

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

src/vs/base/browser/ui/contextview/contextview.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,10 @@ export class ContextView extends Disposable {
216216
}
217217
}
218218

219+
getViewElement(): HTMLElement {
220+
return this.view;
221+
}
222+
219223
layout(): void {
220224
if (!this.isVisible()) {
221225
return;

src/vs/editor/contrib/contextmenu/contextmenu.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,14 @@ export class ContextMenuController implements IEditorContribution {
4949
this._toDispose.add(this._editor.onContextMenu((e: IEditorMouseEvent) => this._onContextMenu(e)));
5050
this._toDispose.add(this._editor.onMouseWheel((e: IMouseWheelEvent) => {
5151
if (this._contextMenuIsBeingShownCount > 0) {
52-
this._contextViewService.hideContextView();
52+
const view = this._contextViewService.getContextViewElement();
53+
const target = e.srcElement as HTMLElement;
54+
55+
// Event triggers on shadow root host first
56+
// Check if the context view is under this host before hiding it #103169
57+
if (!(target.shadowRoot && dom.getShadowRoot(view) === target.shadowRoot)) {
58+
this._contextViewService.hideContextView();
59+
}
5360
}
5461
}));
5562
this._toDispose.add(this._editor.onKeyDown((e: IKeyboardEvent) => {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export interface IContextViewService extends IContextViewProvider {
1717

1818
showContextView(delegate: IContextViewDelegate, container?: HTMLElement, shadowRoot?: boolean): IDisposable;
1919
hideContextView(data?: any): void;
20+
getContextViewElement(): HTMLElement;
2021
layout(): void;
2122
anchorAlignment?: AnchorAlignment;
2223
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export class ContextViewService extends Disposable implements IContextViewServic
5858
return disposable;
5959
}
6060

61+
getContextViewElement(): HTMLElement {
62+
return this.contextView.getViewElement();
63+
}
64+
6165
layout(): void {
6266
this.contextView.layout();
6367
}

0 commit comments

Comments
 (0)