提交 4d2d726e 编写于 作者: J Joao Moreno

Merge branch 'master' of github.com:Microsoft/vscode

......@@ -694,7 +694,7 @@ export class MouseTargetFactory {
return request.fulfill(MouseTargetType.CONTENT_EMPTY, pos, void 0, EMPTY_CONTENT_IN_LINES);
}
let visibleRange = ctx.visibleRangeForPosition2(lineNumber, column);
const visibleRange = ctx.visibleRangeForPosition2(lineNumber, column);
if (!visibleRange) {
return request.fulfill(MouseTargetType.UNKNOWN, pos);
......@@ -706,33 +706,35 @@ export class MouseTargetFactory {
return request.fulfill(MouseTargetType.CONTENT_TEXT, pos);
}
let mouseIsBetween: boolean;
// Let's define a, b, c and check if the offset is in between them...
interface OffsetColumn { offset: number; column: number; }
let points: OffsetColumn[] = [];
points.push({ offset: visibleRange.left, column: column });
if (column > 1) {
let prevColumnHorizontalOffset = visibleRange.left;
mouseIsBetween = false;
mouseIsBetween = mouseIsBetween || (prevColumnHorizontalOffset < request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset < columnHorizontalOffset); // LTR case
mouseIsBetween = mouseIsBetween || (columnHorizontalOffset < request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset < prevColumnHorizontalOffset); // RTL case
if (mouseIsBetween) {
let rng = new EditorRange(lineNumber, column, lineNumber, column - 1);
return request.fulfill(MouseTargetType.CONTENT_TEXT, pos, rng);
const visibleRange = ctx.visibleRangeForPosition2(lineNumber, column - 1);
if (visibleRange) {
points.push({ offset: visibleRange.left, column: column - 1 });
}
}
let lineMaxColumn = ctx.model.getLineMaxColumn(lineNumber);
const lineMaxColumn = ctx.model.getLineMaxColumn(lineNumber);
if (column < lineMaxColumn) {
let nextColumnVisibleRange = ctx.visibleRangeForPosition2(lineNumber, column + 1);
if (nextColumnVisibleRange) {
let nextColumnHorizontalOffset = nextColumnVisibleRange.left;
mouseIsBetween = false;
mouseIsBetween = mouseIsBetween || (columnHorizontalOffset < request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset < nextColumnHorizontalOffset); // LTR case
mouseIsBetween = mouseIsBetween || (nextColumnHorizontalOffset < request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset < columnHorizontalOffset); // RTL case
if (mouseIsBetween) {
let rng = new EditorRange(lineNumber, column, lineNumber, column + 1);
return request.fulfill(MouseTargetType.CONTENT_TEXT, pos, rng);
}
const visibleRange = ctx.visibleRangeForPosition2(lineNumber, column + 1);
if (visibleRange) {
points.push({ offset: visibleRange.left, column: column + 1 });
}
}
points.sort((a, b) => a.offset - b.offset);
for (let i = 1; i < points.length; i++) {
const prev = points[i - 1];
const curr = points[i];
if (prev.offset <= request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset <= curr.offset) {
const rng = new EditorRange(lineNumber, prev.column, lineNumber, curr.column);
return request.fulfill(MouseTargetType.CONTENT_TEXT, pos, rng);
}
}
return request.fulfill(MouseTargetType.CONTENT_TEXT, pos);
}
......@@ -940,4 +942,4 @@ export class MouseTargetFactory {
hitTarget: null
};
}
}
\ No newline at end of file
}
......@@ -180,6 +180,7 @@ export class OverviewZoneManager {
const totalHeight = Math.floor(this.getCanvasHeight()); // @perf
const outerHeight = Math.floor(this._outerHeight); // @perf
const heightRatio = totalHeight / outerHeight;
const halfMinimumHeight = Math.floor(Constants.MINIMUM_HEIGHT * this._pixelRatio / 2);
let allColorZones: ColorZone[] = [];
for (let i = 0, len = this._zones.length; i < len; i++) {
......@@ -199,8 +200,8 @@ export class OverviewZoneManager {
let ycenter = Math.floor((y1 + y2) / 2);
let halfHeight = (y2 - ycenter);
if (halfHeight < Constants.MINIMUM_HEIGHT / 2) {
halfHeight = Constants.MINIMUM_HEIGHT / 2;
if (halfHeight < halfMinimumHeight) {
halfHeight = halfMinimumHeight;
}
if (ycenter - halfHeight < 0) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册