mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-07 17:44:05 -05:00
Merge branch 'master' of github.com:Microsoft/vscode
This commit is contained in:
@@ -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);
|
||||
const visibleRange = ctx.visibleRangeForPosition2(lineNumber, column - 1);
|
||||
if (visibleRange) {
|
||||
points.push({ offset: visibleRange.left, column: column - 1 });
|
||||
}
|
||||
}
|
||||
const lineMaxColumn = ctx.model.getLineMaxColumn(lineNumber);
|
||||
if (column < lineMaxColumn) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
let 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return request.fulfill(MouseTargetType.CONTENT_TEXT, pos);
|
||||
}
|
||||
|
||||
@@ -940,4 +942,4 @@ export class MouseTargetFactory {
|
||||
hitTarget: null
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user