From fcfa0c3aaa79fec9977dc282f86eedda9dbe978c Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 6 Feb 2017 13:04:36 +0100 Subject: [PATCH] Fixes #20011: Explicit check if the view cursor is hit --- src/vs/editor/browser/controller/mouseTarget.ts | 13 +++++++++++++ .../browser/viewParts/viewCursors/viewCursor.ts | 2 ++ 2 files changed, 15 insertions(+) diff --git a/src/vs/editor/browser/controller/mouseTarget.ts b/src/vs/editor/browser/controller/mouseTarget.ts index 5f9414647a9..1857f1611d6 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 1727ea66cb7..9d07211a851 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, -- GitLab