diff --git a/src/vs/editor/browser/view/viewImpl.ts b/src/vs/editor/browser/view/viewImpl.ts index a79acee4e84317f010d2025f3809eabf25e0b14d..28e858ea7e1acddb491e2709f724e4310092a71b 100644 --- a/src/vs/editor/browser/view/viewImpl.ts +++ b/src/vs/editor/browser/view/viewImpl.ts @@ -460,7 +460,11 @@ export class View extends ViewEventHandler { } public getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null { - return this.pointerHandler.getTargetAtClientPoint(clientX, clientY); + const mouseTarget = this.pointerHandler.getTargetAtClientPoint(clientX, clientY); + if (!mouseTarget) { + return null; + } + return ViewOutgoingEvents.convertViewToModelMouseTarget(mouseTarget, this._context.model.coordinatesConverter); } public createOverviewRuler(cssClassName: string): OverviewRuler { diff --git a/src/vs/editor/browser/view/viewOutgoingEvents.ts b/src/vs/editor/browser/view/viewOutgoingEvents.ts index dce981872952d1af8e16f6c49b0b19c7d003314f..8a39ae53519c36eedc50713f0996fe2e2d2558ea 100644 --- a/src/vs/editor/browser/view/viewOutgoingEvents.ts +++ b/src/vs/editor/browser/view/viewOutgoingEvents.ts @@ -11,7 +11,7 @@ import { Position } from 'vs/editor/common/core/position'; import { Range } from 'vs/editor/common/core/range'; import { IScrollEvent } from 'vs/editor/common/editorCommon'; import * as viewEvents from 'vs/editor/common/view/viewEvents'; -import { IViewModel } from 'vs/editor/common/viewModel/viewModel'; +import { IViewModel, ICoordinatesConverter } from 'vs/editor/common/viewModel/viewModel'; import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent'; export interface EventCallback { @@ -132,23 +132,19 @@ export class ViewOutgoingEvents extends Disposable { } private _convertViewToModelMouseTarget(target: IMouseTarget): IMouseTarget { + return ViewOutgoingEvents.convertViewToModelMouseTarget(target, this._viewModel.coordinatesConverter); + } + + public static convertViewToModelMouseTarget(target: IMouseTarget, coordinatesConverter: ICoordinatesConverter): IMouseTarget { return new ExternalMouseTarget( target.element, target.type, target.mouseColumn, - target.position ? this._convertViewToModelPosition(target.position) : null, - target.range ? this._convertViewToModelRange(target.range) : null, + target.position ? coordinatesConverter.convertViewPositionToModelPosition(target.position) : null, + target.range ? coordinatesConverter.convertViewRangeToModelRange(target.range) : null, target.detail ); } - - private _convertViewToModelPosition(viewPosition: Position): Position { - return this._viewModel.coordinatesConverter.convertViewPositionToModelPosition(viewPosition); - } - - private _convertViewToModelRange(viewRange: Range): Range { - return this._viewModel.coordinatesConverter.convertViewRangeToModelRange(viewRange); - } } class ExternalMouseTarget implements IMouseTarget {