Skip to content

Commit b6142df

Browse files
committed
Fixes microsoft/monaco-editor#1378: Convert view coordinates to model coordinates in getTargetAtClientPoint
1 parent faddb5d commit b6142df

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

src/vs/editor/browser/view/viewImpl.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,11 @@ export class View extends ViewEventHandler {
460460
}
461461

462462
public getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null {
463-
return this.pointerHandler.getTargetAtClientPoint(clientX, clientY);
463+
const mouseTarget = this.pointerHandler.getTargetAtClientPoint(clientX, clientY);
464+
if (!mouseTarget) {
465+
return null;
466+
}
467+
return ViewOutgoingEvents.convertViewToModelMouseTarget(mouseTarget, this._context.model.coordinatesConverter);
464468
}
465469

466470
public createOverviewRuler(cssClassName: string): OverviewRuler {

src/vs/editor/browser/view/viewOutgoingEvents.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { Position } from 'vs/editor/common/core/position';
1111
import { Range } from 'vs/editor/common/core/range';
1212
import { IScrollEvent } from 'vs/editor/common/editorCommon';
1313
import * as viewEvents from 'vs/editor/common/view/viewEvents';
14-
import { IViewModel } from 'vs/editor/common/viewModel/viewModel';
14+
import { IViewModel, ICoordinatesConverter } from 'vs/editor/common/viewModel/viewModel';
1515
import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent';
1616

1717
export interface EventCallback<T> {
@@ -132,23 +132,19 @@ export class ViewOutgoingEvents extends Disposable {
132132
}
133133

134134
private _convertViewToModelMouseTarget(target: IMouseTarget): IMouseTarget {
135+
return ViewOutgoingEvents.convertViewToModelMouseTarget(target, this._viewModel.coordinatesConverter);
136+
}
137+
138+
public static convertViewToModelMouseTarget(target: IMouseTarget, coordinatesConverter: ICoordinatesConverter): IMouseTarget {
135139
return new ExternalMouseTarget(
136140
target.element,
137141
target.type,
138142
target.mouseColumn,
139-
target.position ? this._convertViewToModelPosition(target.position) : null,
140-
target.range ? this._convertViewToModelRange(target.range) : null,
143+
target.position ? coordinatesConverter.convertViewPositionToModelPosition(target.position) : null,
144+
target.range ? coordinatesConverter.convertViewRangeToModelRange(target.range) : null,
141145
target.detail
142146
);
143147
}
144-
145-
private _convertViewToModelPosition(viewPosition: Position): Position {
146-
return this._viewModel.coordinatesConverter.convertViewPositionToModelPosition(viewPosition);
147-
}
148-
149-
private _convertViewToModelRange(viewRange: Range): Range {
150-
return this._viewModel.coordinatesConverter.convertViewRangeToModelRange(viewRange);
151-
}
152148
}
153149

154150
class ExternalMouseTarget implements IMouseTarget {

0 commit comments

Comments
 (0)