mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-24 17:23:05 -05:00
Merge VS Code 1.21 source code (#1067)
* Initial VS Code 1.21 file copy with patches * A few more merges * Post npm install * Fix batch of build breaks * Fix more build breaks * Fix more build errors * Fix more build breaks * Runtime fixes 1 * Get connection dialog working with some todos * Fix a few packaging issues * Copy several node_modules to package build to fix loader issues * Fix breaks from master * A few more fixes * Make tests pass * First pass of license header updates * Second pass of license header updates * Fix restore dialog issues * Remove add additional themes menu items * fix select box issues where the list doesn't show up * formatting * Fix editor dispose issue * Copy over node modules to correct location on all platforms
This commit is contained in:
@@ -364,7 +364,7 @@ abstract class BareHitTestRequest {
|
||||
|
||||
this.mouseVerticalOffset = Math.max(0, ctx.getCurrentScrollTop() + pos.y - editorPos.y);
|
||||
this.mouseContentHorizontalOffset = ctx.getCurrentScrollLeft() + pos.x - editorPos.x - ctx.layoutInfo.contentLeft;
|
||||
this.isInMarginArea = (pos.x - editorPos.x < ctx.layoutInfo.contentLeft);
|
||||
this.isInMarginArea = (pos.x - editorPos.x < ctx.layoutInfo.contentLeft && pos.x - editorPos.x >= ctx.layoutInfo.glyphMarginLeft);
|
||||
this.isInContentArea = !this.isInMarginArea;
|
||||
this.mouseColumn = Math.max(0, MouseTargetFactory._getMouseColumn(this.mouseContentHorizontalOffset, ctx.typicalHalfwidthCharacterWidth));
|
||||
}
|
||||
@@ -587,6 +587,8 @@ export class MouseTargetFactory {
|
||||
offsetX: offset
|
||||
};
|
||||
|
||||
offset -= ctx.layoutInfo.glyphMarginLeft;
|
||||
|
||||
if (offset <= ctx.layoutInfo.glyphMarginWidth) {
|
||||
// On the glyph margin
|
||||
return request.fulfill(MouseTargetType.GUTTER_GLYPH_MARGIN, pos, res.range, detail);
|
||||
@@ -694,7 +696,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 +708,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 +944,4 @@ export class MouseTargetFactory {
|
||||
hitTarget: null
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user