diff --git a/src/vs/editor/browser/controller/mouseTarget.ts b/src/vs/editor/browser/controller/mouseTarget.ts index 5f9414647a90ae7b6e097662e2ebfe3b447e0760..1857f1611d69104213a246c60cf409d6dad2f4b1 100644 --- a/src/vs/editor/browser/controller/mouseTarget.ts +++ b/src/vs/editor/browser/controller/mouseTarget.ts @@ -475,6 +475,19 @@ export class MouseTargetFactory { private static _hitTestViewCursor(ctx: HitTestContext, request: HitTestRequest): MouseTarget { + if (request.target) { + // Check if we've hit a painted cursor + const lastViewCursorsRenderData = ctx.lastViewCursorsRenderData; + + for (let i = 0, len = lastViewCursorsRenderData.length; i < len; i++) { + const d = lastViewCursorsRenderData[i]; + + if (request.target === d.domNode) { + return request.fulfill(MouseTargetType.CONTENT_TEXT, d.position); + } + } + } + if (request.isInContentArea) { // Edge has a bug when hit-testing the exact position of a cursor, // instead of returning the correct dom node, it returns the diff --git a/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts b/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts index 1727ea66cb7ef0636473a790ecd397a01bbf2964..9d07211a851a1caba96ddb69cfe83657e85765c5 100644 --- a/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts +++ b/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts @@ -13,6 +13,7 @@ import { ViewContext } from 'vs/editor/common/view/viewContext'; import { IRenderingContext, IRestrictedRenderingContext } from 'vs/editor/common/view/renderingContext'; export interface IViewCursorRenderData { + domNode: HTMLElement; position: Position; contentTop: number; contentLeft: number; @@ -190,6 +191,7 @@ export class ViewCursor { this._domNode.setHeight(this._lineHeight); return { + domNode: this._domNode.domNode, position: this._position, contentTop: top, contentLeft: this._renderData.left,