From 0cf33ee9d9cf1905b94a91367d43017e1226d177 Mon Sep 17 00:00:00 2001 From: Afonso Matos Date: Mon, 23 Aug 2021 11:07:04 +0100 Subject: [PATCH 1/2] Update mouseHandler.ts --- src/vs/editor/browser/controller/mouseHandler.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/browser/controller/mouseHandler.ts b/src/vs/editor/browser/controller/mouseHandler.ts index 0b26756bc9f..fc51779d077 100644 --- a/src/vs/editor/browser/controller/mouseHandler.ts +++ b/src/vs/editor/browser/controller/mouseHandler.ts @@ -176,7 +176,9 @@ export class MouseHandler extends ViewEventHandler { } protected _createMouseTarget(e: EditorMouseEvent, testEventTarget: boolean): IMouseTarget { - return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, testEventTarget ? e.target : null); + const shadowRoot = dom.getShadowRoot(this.viewHelper.viewDomNode); + const target = shadowRoot ? shadowRoot.elementsFromPoint(e.posx, e.posy).find(el => this.viewHelper.viewDomNode.contains(el)) : e.target; + return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, testEventTarget ? target : null); } private _getMouseColumn(e: EditorMouseEvent): number { From 10d20a7a01628981439d21f136b27028db844f9a Mon Sep 17 00:00:00 2001 From: Afonso Matos Date: Mon, 23 Aug 2021 11:25:14 +0100 Subject: [PATCH 2/2] perform shadow check if element outside viewdom node --- src/vs/editor/browser/controller/mouseHandler.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/browser/controller/mouseHandler.ts b/src/vs/editor/browser/controller/mouseHandler.ts index 0b26756bc9f..6743bb2cba2 100644 --- a/src/vs/editor/browser/controller/mouseHandler.ts +++ b/src/vs/editor/browser/controller/mouseHandler.ts @@ -176,7 +176,16 @@ export class MouseHandler extends ViewEventHandler { } protected _createMouseTarget(e: EditorMouseEvent, testEventTarget: boolean): IMouseTarget { - return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, testEventTarget ? e.target : null); + let target = e.target; + if (!this.viewHelper.viewDomNode.contains(target)) { + const shadowRoot = dom.getShadowRoot(this.viewHelper.viewDomNode); + if (shadowRoot) { + target = (shadowRoot).elementsFromPoint(e.posx, e.posy).find( + (el: Element) => this.viewHelper.viewDomNode.contains(el) + ); + } + } + return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, testEventTarget ? target : null); } private _getMouseColumn(e: EditorMouseEvent): number {