From 3e1afd6999b463407b1eccc244bed360f4a3e32e Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Fri, 6 Mar 2020 10:16:37 +0100 Subject: [PATCH] Fixes #82540: Only execute a click link gesture if the mouse down occurs on the same line number --- src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts b/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts index bc3e6cad236..202d1e0d294 100644 --- a/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts +++ b/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts @@ -110,6 +110,7 @@ export class ClickLinkGesture extends Disposable { private lastMouseMoveEvent: ClickLinkMouseEvent | null; private hasTriggerKeyOnMouseDown: boolean; + private lineNumberOnMouseDown: number; constructor(editor: ICodeEditor) { super(); @@ -119,6 +120,7 @@ export class ClickLinkGesture extends Disposable { this.lastMouseMoveEvent = null; this.hasTriggerKeyOnMouseDown = false; + this.lineNumberOnMouseDown = 0; this._register(this._editor.onDidChangeConfiguration((e) => { if (e.hasChanged(EditorOption.multiCursorModifier)) { @@ -129,6 +131,7 @@ export class ClickLinkGesture extends Disposable { this._opts = newOpts; this.lastMouseMoveEvent = null; this.hasTriggerKeyOnMouseDown = false; + this.lineNumberOnMouseDown = 0; this._onCancel.fire(); } })); @@ -167,10 +170,12 @@ export class ClickLinkGesture extends Disposable { // release the mouse button without wanting to do the navigation. // With this flag we prevent goto definition if the mouse was down before the trigger key was pressed. this.hasTriggerKeyOnMouseDown = mouseEvent.hasTriggerModifier; + this.lineNumberOnMouseDown = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0; } private onEditorMouseUp(mouseEvent: ClickLinkMouseEvent): void { - if (this.hasTriggerKeyOnMouseDown) { + const currentLineNumber = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0; + if (this.hasTriggerKeyOnMouseDown && this.lineNumberOnMouseDown && this.lineNumberOnMouseDown === currentLineNumber) { this._onExecute.fire(mouseEvent); } } -- GitLab