提交 46820c0d 编写于 作者: A Alex Dima

Fixes #21729: Issue with text selection over minimap

上级 b295c772
......@@ -162,6 +162,14 @@ class ElementPath {
);
}
public static isChildOfMinimap(path: Uint8Array): boolean {
return (
path.length >= 2
&& path[0] === PartFingerprint.OverflowGuard
&& path[1] === PartFingerprint.Minimap
);
}
public static isChildOfContentWidgets(path: Uint8Array): boolean {
return (
path.length >= 4
......@@ -437,6 +445,7 @@ export class MouseTargetFactory {
result = result || MouseTargetFactory._hitTestContentWidget(ctx, request);
result = result || MouseTargetFactory._hitTestOverlayWidget(ctx, request);
result = result || MouseTargetFactory._hitTestMinimap(ctx, request);
result = result || MouseTargetFactory._hitTestScrollbarSlider(ctx, request);
result = result || MouseTargetFactory._hitTestViewZone(ctx, request);
result = result || MouseTargetFactory._hitTestMargin(ctx, request);
......@@ -594,6 +603,15 @@ export class MouseTargetFactory {
return this._createMouseTarget(ctx, request.withTarget(hitTestResult.hitTarget), true);
}
private static _hitTestMinimap(ctx: HitTestContext, request: HitTestRequest): MouseTarget {
if (ElementPath.isChildOfMinimap(request.targetPath)) {
const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);
const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);
return request.fulfill(MouseTargetType.SCROLLBAR, new Position(possibleLineNumber, maxColumn));
}
return null;
}
private static _hitTestScrollbarSlider(ctx: HitTestContext, request: HitTestRequest): MouseTarget {
if (ElementPath.isChildOfScrollableElement(request.targetPath)) {
if (request.target && request.target.nodeType === 1) {
......
......@@ -36,6 +36,7 @@ export const enum PartFingerprint {
ScrollableElement,
TextArea,
ViewLines,
Minimap
}
export class PartFingerprints {
......
......@@ -6,7 +6,7 @@
'use strict';
import 'vs/css!./minimap';
import { ViewPart } from 'vs/editor/browser/view/viewPart';
import { ViewPart, PartFingerprint, PartFingerprints } from 'vs/editor/browser/view/viewPart';
import { ViewContext } from 'vs/editor/common/view/viewContext';
import { RenderingContext, RestrictedRenderingContext } from 'vs/editor/common/view/renderingContext';
import { getOrCreateMinimapCharRenderer } from 'vs/editor/common/view/runtimeMinimapCharRenderer';
......@@ -440,6 +440,7 @@ export class Minimap extends ViewPart {
this._buffers = null;
this._domNode = createFastDomNode(document.createElement('div'));
PartFingerprints.write(this._domNode.domNode, PartFingerprint.Minimap);
this._domNode.setClassName('minimap');
this._domNode.setPosition('absolute');
this._domNode.setRight(this._context.configuration.editor.layoutInfo.verticalScrollbarWidth);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册