未验证 提交 b6142df5 编写于 作者: A Alex Dima

Fixes microsoft/monaco-editor#1378: Convert view coordinates to model...

Fixes microsoft/monaco-editor#1378: Convert view coordinates to model coordinates in getTargetAtClientPoint
上级 faddb5d3
......@@ -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 {
......
......@@ -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<T> {
......@@ -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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册